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 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/local123@localhost:1521/XEPDB1 | grep -q 1"] interval: 10s timeout: 5s retries: 30 start_period: 60s networks: - shared_network networks: shared_network: external: true volumes: oracle_data: driver: local