name: agy-web services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: agy POSTGRES_PASSWORD: agy POSTGRES_DB: agy_web ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U agy -d agy_web"] interval: 5s timeout: 5s retries: 10 redis: image: redis:7-alpine command: ["redis-server", "--appendonly", "yes"] ports: - "6379:6379" volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 api: build: context: ../.. dockerfile: infra/docker/Dockerfile.api env_file: - ../../.env environment: APP_ENV: development DATABASE_URL: postgresql+psycopg://agy:agy@postgres:5432/agy_web REDIS_URL: redis://redis:6379/0 ports: - "8000:8000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy command: > sh -c "python -m alembic upgrade head && python -m app.seed && python -m uvicorn app.main:app --host 0.0.0.0 --port 8000" web: build: context: ../.. dockerfile: infra/docker/Dockerfile.web environment: NODE_ENV: production NEXT_PUBLIC_API_URL: http://localhost:8000 ports: - "3000:3000" depends_on: - api volumes: pgdata: redisdata: