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:
| Container | Port | Health check |
|---|---|---|
| frontend | 3000 | HTTP GET / |
| backend | 8000 | HTTP GET /api/v1/health |
| p2rank | 5001 | HTTP GET /health |
| rdkit | 5002 | HTTP GET /health |
| immunebuilder | 5003 | HTTP GET /health |
| redis | 6379 | redis-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 predictionProduction deployment
Use the production compose file for deployment:
docker compose -f docker-compose.prod.yml up -dKey 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-stoppedon 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 --buildOut 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