Docker Compose orchestration for development and local testing
This skill covers Docker Compose orchestration for development and local testing. Use this when managing services, configuring containers, or troubleshooting development environments.
CSKU Lab uses Docker Compose (docker-compose.dev.yaml) to orchestrate all services and infrastructure during development.
main-server (Port 8080)
main-server:
build:
context: ./main-server
dockerfile: Dockerfile.dev
ports:
- "8080:8080"
environment:
DATABASE_URL: postgresql://user:pass@db:5432/csku
REDIS_URL: redis://redis:6379
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/
depends_on:
- db
- redis
- rabbitmq
volumes:
- ./main-server:/app # Hot reload
config-server (Port 8081)
config-server:
build:
context: ./config-server
dockerfile: Dockerfile.dev
ports:
- "8081:8081"
environment:
MONGO_URL: mongodb://mongo:27017
REDIS_URL: redis://redis:6379
depends_on:
- mongo
- redis
task-server (Port 8082)
task-server:
build:
context: ./task-server
dockerfile: Dockerfile.dev
ports:
- "8082:8082"
environment:
MONGO_URL: mongodb://mongo:27017
depends_on:
- mongo
go-grader-master (Port 8083)
go-grader-master:
build:
context: ./go-grader
dockerfile: docker/master/Dockerfile.dev
ports:
- "8083:8083"
environment:
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/
CONFIG_SERVER_URL: config-server:8081
TASK_SERVER_URL: task-server:8082
depends_on:
- rabbitmq
- config-server
- task-server
go-grader-worker
go-grader-worker:
build:
context: ./go-grader
dockerfile: docker/worker/Dockerfile
privileged: true # Required for Isolate
environment:
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/
MASTER_URL: go-grader-master:8083
depends_on:
- rabbitmq
- go-grader-master
volumes:
- /var/lib/isolate:/var/lib/isolate # Isolate data
PostgreSQL (main-server database)