services: api: build: context: . target: api environment: SCHEDULE_LINK: ${SCHEDULE_LINK} SCHEDULE_CACHE_TTL: ${SCHEDULE_CACHE_TTL:-900} SCHEDULE_RETRY_AFTER: ${SCHEDULE_RETRY_AFTER:-60} # админка: секретный путь панели и учётные данные (пусто = выключена) ADMIN_PATH: ${ADMIN_PATH:-} ADMIN_LOGIN: ${ADMIN_LOGIN:-} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-} SCHEDULE_INTERVAL_MINUTES: ${SCHEDULE_INTERVAL_MINUTES:-15} # настройки админки переживают пересборку благодаря тому /data SETTINGS_FILE: ${SETTINGS_FILE:-/data/settings.json} volumes: - schedule_data:/data ports: - "${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: SCHEDULE_API: ${SCHEDULE_API:-http://api:8000} ADMIN_PATH: ${ADMIN_PATH:-} ports: - "${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 volumes: schedule_data: