services: reverse-proxy: image: nginx:1.27 ports: - '127.0.0.1:8004:80' volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - files-data:/var/www/files:ro - frontend-assets:/var/www/iosdc-japan/2025/code-battle:ro depends_on: api-server: condition: service_started frontend: condition: service_completed_successfully restart: always frontend: build: context: . dockerfile: frontend/Dockerfile args: ALBATROSS_BASE_PATH: $ALBATROSS_BASE_PATH volumes: - frontend-assets:/output entrypoint: ["sh", "-c", "cp -r /usr/share/nginx/html/. /output/"] restart: "no" api-server: build: context: ./backend expose: - 80 volumes: - files-data:/data/files:rw depends_on: db: condition: service_healthy task-db: condition: service_healthy environment: ALBATROSS_DB_HOST: db ALBATROSS_DB_PORT: 5432 ALBATROSS_DB_USER: postgres ALBATROSS_DB_PASSWORD: eepei5reesoo0ov2ceelahd4Emi0au8ahJa6oochohheiquahweihoovahsee1oo ALBATROSS_DB_NAME: albatross env_file: [.env] restart: always db: image: postgres:16.3 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: eepei5reesoo0ov2ceelahd4Emi0au8ahJa6oochohheiquahweihoovahsee1oo POSTGRES_DB: albatross expose: - 5432 healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 volumes: - db-data:/var/lib/postgresql/data restart: always task-db: image: redis:7.4.0 expose: - 6379 healthcheck: test: ["CMD-SHELL", "redis-cli ping"] interval: 10s timeout: 5s retries: 5 restart: always worker-php: build: context: . dockerfile: worker/php/Dockerfile expose: - 80 env_file: [.env] restart: always worker-swift: build: context: ./worker/swift expose: - 80 env_file: [.env] restart: always tools: build: context: ./backend dockerfile: ./Dockerfile.tools environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: eepei5reesoo0ov2ceelahd4Emi0au8ahJa6oochohheiquahweihoovahsee1oo POSTGRES_DB: albatross profiles: - tools volumes: db-data: files-data: frontend-assets: