Skip to main content
Documentation

Docker setup

OpenDDE uses Docker Compose to orchestrate six containers. This page covers advanced configuration, troubleshooting, and production deployment.

Container overview

Running docker compose up --build starts:

ContainerPortHealth check
frontend3000HTTP GET /
backend8000HTTP GET /api/v1/health
p2rank5001HTTP GET /health
rdkit5002HTTP GET /health
immunebuilder5003HTTP GET /health
redis6379redis-cli ping

Environment variables

# .env file
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key
ANTHROPIC_API_KEY=sk-ant-...   # Optional: enables AI assistant
ALPHAFOLD_API_KEY=...          # Optional: for complex prediction

Production deployment

Use the production compose file for deployment:

docker compose -f docker-compose.prod.yml up -d

Key differences in production:

  • Gunicorn with 4 Uvicorn workers (instead of single-process uvicorn)
  • No source code volume mounts
  • Internal services (P2Rank, ImmuneBuilder, RDKit) have no exposed ports
  • restart: unless-stopped on all services

Troubleshooting

Containers won’t start

# Check Docker is running
docker info

# View container logs
docker compose logs backend
docker compose logs p2rank

# Rebuild from scratch
docker compose down -v
docker compose up --build

Out of memory

Increase Docker Desktop memory allocation to at least 8 GB in Settings → Resources → Memory.

Port conflicts

If port 3000 or 8000 is already in use, modify the port mapping in docker-compose.yml:

ports:
  - "3001:3000"  # Map to different host port

← Back to Quick start