services:
  backend:
    container_name: ranking_backend
    build:
      context: ./backend
      dockerfile: Dockerfile
    depends_on:
      oracle18c:
        condition: service_healthy
    ports:
      - "8010:8000"
    env_file:
      - ./backend/.env
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - API_HOST=0.0.0.0
      - API_PORT=8000
      - API_RELOAD=true
      - CORS_ORIGINS=http://localhost:5173,http://frontend:5173,http://localhost:4200,http://127.0.0.1:4200
      - LOG_LEVEL=INFO
    volumes:
      - ./backend/src:/app/src
      - ./backend/scripts:/app/scripts
      - ./backend/static:/app/static
      - /etc/localtime:/etc/localtime:ro
    networks:
      - shared_network
    restart: unless-stopped

  frontend:
    container_name: ranking_frontend
    build:
      context: ./frontend
      dockerfile: Dockerfile
    depends_on:
      - backend
    ports:
      - "5173:5173"
    environment:
      - VITE_HOST_ATUACAPES=${HOST_ATUACAPES:-https://atuacapes.capes.gov.br}
    volumes:
      - ./frontend/src:/app/src
      - ./frontend/public:/app/public
      - ./frontend/index.html:/app/index.html
      - ./frontend/vite.config.js:/app/vite.config.js
      - /etc/localtime:/etc/localtime:ro
    links:
      - backend
    networks:
      - shared_network
    restart: unless-stopped
    
  oracle18c:
      container_name: oracle18c
      image: gvenzl/oracle-xe:18-slim
      environment:
        - ORACLE_PASSWORD=local123
        - ORACLE_CHARACTERSET=AL32UTF8
        - APP_USER=local123
        - APP_USER_PASSWORD=local123
        - TZ=America/Sao_Paulo
      ports:
        - "1521:1521"
        - "5500:5500"
      volumes:
        - oracle_data:/opt/oracle/oradata
      healthcheck:
        test: ["CMD", "bash", "-c", "echo 'SELECT 1 FROM DUAL;' | sqlplus -s SYSTEM/\"$${ORACLE_PASSWORD}\"@localhost:1521/XEPDB1"]
        interval: 30s
        timeout: 10s
        retries: 20
      networks:
        - shared_network    

networks:
  shared_network:
    external: true

volumes:
  oracle_data:
    driver: local
