# Run through scripts/deploy.py so every deployment shares the instance lock. name: alphapulse-dev x-backend: &backend image: ${ALPHAPULSE_BACKEND_IMAGE:?Set a verified backend digest} env_file: .env restart: unless-stopped stop_grace_period: 60s networks: [dev_default] services: api: <<: *backend container_name: AlphaPulse-dev-api command: [uvicorn, alphapulse.api.main:app, --host, 0.0.0.0, --port, "8000", --proxy-headers, --forwarded-allow-ips, "172.18.0.0/16"] healthcheck: test: [CMD, python, -c, "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/health', timeout=3)"] interval: 5s timeout: 4s retries: 12 crawler: <<: *backend container_name: AlphaPulse-dev-crawler command: [python, -m, alphapulse.crawler.manager] market: <<: *backend container_name: AlphaPulse-dev-market command: [python, -m, alphapulse.market.worker] trader: <<: *backend container_name: AlphaPulse-dev-trader command: [python, -m, alphapulse.trading.engine] news-risk: <<: *backend container_name: AlphaPulse-dev-news-risk command: [python, -m, alphapulse.news_risk.worker] calendar: <<: *backend container_name: AlphaPulse-dev-calendar command: [python, -m, alphapulse.calendar.worker] web: image: ${ALPHAPULSE_WEB_IMAGE:?Set a verified web digest} container_name: AlphaPulse-dev restart: unless-stopped depends_on: api: condition: service_healthy healthcheck: test: [CMD, wget, -q, -O, /dev/null, "http://127.0.0.1/api/health"] interval: 5s timeout: 4s retries: 12 ports: - 127.0.0.1:21005:80 networks: [dev_default] networks: dev_default: external: true