services: api: build: context: . target: api environment: SCHEDULE_LINK: ${SCHEDULE_LINK} SCHEDULE_INTERVAL_MINUTES: ${SCHEDULE_INTERVAL_MINUTES:-15} SCHEDULE_CACHE_TTL: ${SCHEDULE_CACHE_TTL:-900} SCHEDULE_RETRY_AFTER: ${SCHEDULE_RETRY_AFTER:-60} ports: # api нужен только фронтенду внутри docker-сети; наружу — 127.0.0.1 для отладки - "127.0.0.1:${API_PORT:-8000}:8000" restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/healthz', timeout=5)"] interval: 30s timeout: 5s retries: 3 start_period: 10s frontend: build: context: . target: frontend environment: # внутри compose api доступен по имени сервиса; менять не нужно SCHEDULE_API: ${SCHEDULE_API:-http://api:8000} ports: # фронт обслуживает nginx; наружу напрямую не смотрит - "127.0.0.1:${FRONTEND_PORT:-8080}:8080" restart: unless-stopped depends_on: api: condition: service_healthy healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/healthz', timeout=5)"] interval: 30s timeout: 5s retries: 3 start_period: 10s