version: '3.9' services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: tglotterybot POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} volumes: - ./postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped backend: image: git.stdm.moe/stardream/tglotterybot-backend:latest command: sh -c "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000" environment: BOT_TOKEN: ${BOT_TOKEN} WEBHOOK_URL: ${WEBHOOK_URL:-} WEBHOOK_SECRET: ${WEBHOOK_SECRET:-} DATABASE_URL: postgresql+asyncpg://postgres:${POSTGRES_PASSWORD:-postgres}@postgres:5432/tglotterybot MINI_APP_URL: ${MINI_APP_URL:-} DEBUG: ${DEBUG:-false} depends_on: postgres: condition: service_healthy restart: unless-stopped frontend: image: git.stdm.moe/stardream/tglotterybot-frontend:latest restart: unless-stopped nginx: image: nginx:alpine ports: - "${PORT:-80}:80" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - backend - frontend restart: unless-stopped