services: backend: build: context: ./backend env_file: - .env environment: ACTION_EXECUTION_MODE: worker ports: - "8000:8000" depends_on: postgres: condition: service_healthy redis: condition: service_healthy worker: build: context: ./backend command: ["python", "-m", "app.worker"] env_file: - .env environment: ACTION_EXECUTION_MODE: worker depends_on: postgres: condition: service_healthy redis: condition: service_healthy frontend: build: context: ./frontend environment: VITE_API_BASE_URL: ${VITE_API_BASE_URL:-http://localhost:8000/api/v1} ports: - "5173:5173" depends_on: - backend bot: build: context: ./bot env_file: - .env depends_on: - backend postgres: image: postgres:16-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-server_panel} POSTGRES_USER: ${POSTGRES_USER:-server_panel} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me} healthcheck: test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] interval: 5s timeout: 5s retries: 12 start_period: 5s ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data redis: image: redis:7-alpine healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 12 start_period: 2s ports: - "6379:6379" volumes: postgres_data: