Skip to content

Latest commit

 

History

History
128 lines (97 loc) · 2.76 KB

File metadata and controls

128 lines (97 loc) · 2.76 KB

Docker Compose Verification Report

Issues Found

Issue 1: Wrong Main File 🔴 CRITICAL

Location: docker-compose.yml line 135

Current:

command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload

Problem:

  • Uses main:app but your code uses main_cloud_ready.py
  • main.py doesn't have cloud support
  • main_cloud_ready.py has ML risk scoring

Should be:

command: uvicorn main_cloud_ready:app --host 0.0.0.0 --port 8000 --reload

Issue 2: Missing DEPLOYMENT_TYPE ⚠️ IMPORTANT

Location: docker-compose.yml line 122-124

Current:

environment:
  - ELASTICSEARCH_HOSTS=http://elasticsearch-us:9200,http://elasticsearch-eu:9200,http://elasticsearch-asia:9200
  - API_PORT=8000

Problem:

  • Doesn't set DEPLOYMENT_TYPE=local
  • Code defaults to 'local' but should be explicit
  • Missing other optional env vars

Should be:

environment:
  - DEPLOYMENT_TYPE=local
  - ELASTICSEARCH_HOSTS=http://elasticsearch-us:9200,http://elasticsearch-eu:9200,http://elasticsearch-asia:9200
  - API_PORT=8000
  - API_HOST=0.0.0.0
  - API_RELOAD=true

Issue 3: Missing Health Check Dependencies ⚠️ IMPORTANT

Location: docker-compose.yml line 129-132

Current:

depends_on:
  - elasticsearch-us
  - elasticsearch-eu
  - elasticsearch-asia

Problem:

  • Only waits for containers to start, not for health checks
  • API might start before Elasticsearch is ready
  • Can cause connection errors

Should be:

depends_on:
  elasticsearch-us:
    condition: service_healthy
  elasticsearch-eu:
    condition: service_healthy
  elasticsearch-asia:
    condition: service_healthy

Issue 4: Dockerfile Uses Wrong Main ⚠️

Location: backend/Dockerfile line 23

Current:

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Problem:

  • Default command uses main:app
  • Should use main_cloud_ready:app or be configurable

Note: This is OK since docker-compose overrides it, but inconsistent.


Issue 5: Missing .env File Support in Docker ⚠️

Location: docker-compose.yml

Problem:

  • No env_file: .env directive
  • Can't easily switch between local/cloud
  • Environment variables hardcoded

Should add:

env_file:
  - .env

What's Correct

  1. ✅ Network configuration (phish-network)
  2. ✅ Volume mounts for Elasticsearch data
  3. ✅ Port mappings (9200, 9201, 9202, 5601, 8000)
  4. ✅ Elasticsearch cluster configuration
  5. ✅ Health checks for Elasticsearch nodes
  6. ✅ Python version in Dockerfile (3.12)
  7. ✅ Requirements installation in Dockerfile

🔧 Recommended Fixes

See the corrected docker-compose.yml below.