x-env: &with-env env_file: - ${RUNTIME_ENV_FILE:-.env.production} # default for local runs restart: unless-stopped services: server1: <<: *with-env image: us-central1-docker.pkg.dev/aptivaai-dev/aptiva-repo/server1:${IMG_TAG} expose: ["${SERVER1_PORT}"] environment: SALARY_DB_PATH: /app/salary_info.db volumes: - ./salary_info.db:/app/salary_info.db:ro - ./user_profile.db:/app/user_profile.db healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:${SERVER1_PORT}/healthz || exit 1"] interval: 30s timeout: 5s retries: 3 server2: image: us-central1-docker.pkg.dev/aptivaai-dev/aptiva-repo/server2:${IMG_TAG} expose: ["${SERVER2_PORT}"] restart: unless-stopped env_file: - ${RUNTIME_ENV_FILE} volumes: - ./public:/app/public:ro - ./salary_info.db:/app/salary_info.db:ro - ./user_profile.db:/app/user_profile.db healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:${SERVER2_PORT}/healthz || exit 1"] interval: 30s timeout: 5s retries: 3 server3: <<: *with-env image: us-central1-docker.pkg.dev/aptivaai-dev/aptiva-repo/server3:${IMG_TAG} expose: ["${SERVER3_PORT}"] healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:${SERVER3_PORT}/healthz || exit 1"] interval: 30s timeout: 5s retries: 3 nginx: <<: *with-env image: nginx:1.25-alpine command: ["nginx", "-g", "daemon off;"] depends_on: [server1, server2, server3] ports: - "80:80" - "443:443" volumes: - ./build:/usr/share/nginx/html:ro - ./nginx.conf:/etc/nginx/nginx.conf:ro - /etc/letsencrypt:/etc/letsencrypt:ro - ./empty:/etc/nginx/conf.d