api/docker-compose.yml
2025-11-19 20:02:34 +00:00

66 lines
1.5 KiB
YAML

services:
redis:
image: redis:7-alpine
container_name: classroomcopilot-redis
ports:
- "6379:6379"
volumes:
- redis-data:/data
command: redis-server --appendonly yes
networks:
- kevlarai-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
# Initialization service - runs setup tasks before backend starts
init:
build:
context: .
dockerfile: Dockerfile
container_name: api-init
env_file:
- .env
environment:
- REDIS_HOST=redis
- RUN_INIT=true
- INIT_MODE=${INIT_MODE:-infra} # Set via .env or override: INIT_MODE=infra,gais-data
- INIT_ONLY=true # Exit after init, don't start server
command: ["./docker-entrypoint.sh", "init-only"]
depends_on:
redis:
condition: service_healthy
networks:
- kevlarai-network
profiles:
- init # Only run when explicitly requested: docker compose --profile init up
backend:
container_name: api
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
environment:
- REDIS_HOST=redis
- RUN_INIT=${RUN_INIT:-false} # Set to 'true' to run init on startup
- INIT_MODE=${INIT_MODE:-infra} # Which init tasks to run
ports:
- 8000:8000
depends_on:
redis:
condition: service_healthy
networks:
- kevlarai-network
volumes:
redis-data:
networks:
kevlarai-network:
name: kevlarai-network
driver: bridge