x-common: &common image: blog-writer:latest build: context: . dockerfile: Dockerfile env_file: .env environment: - PYTHONPATH=/app volumes: - ./bots:/app/bots - ./config:/app/config - ./templates:/app/templates - ./dashboard/backend:/app/dashboard/backend - ./dashboard/__init__.py:/app/dashboard/__init__.py - ./data:/app/data - ./logs:/app/logs - ./assets:/app/assets - ./runtime_guard.py:/app/runtime_guard.py - ./blog_engine_cli.py:/app/blog_engine_cli.py - ./blog_runtime.py:/app/blog_runtime.py - ./credentials.json:/app/credentials.json:ro restart: unless-stopped services: scheduler: <<: *common container_name: blog-scheduler command: ["python3", "bots/scheduler.py"] dashboard: <<: *common container_name: blog-dashboard command: ["python3", "-m", "uvicorn", "dashboard.backend.server:app", "--host", "0.0.0.0", "--port", "8080"] ports: - "8080:8080"