# QuantDinger Docker Compose # Quick start: docker-compose up -d version: '3.8' services: # PostgreSQL Database postgres: image: postgres:16-alpine container_name: quantdinger-db restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-quantdinger} POSTGRES_USER: ${POSTGRES_USER:-quantdinger} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-quantdinger123} TZ: Asia/Shanghai volumes: - postgres_data:/var/lib/postgresql/data - ./backend_api_python/migrations/init.sql:/docker-entrypoint-initdb.d/01-init.sql - ./backend_api_python/migrations:/migrations ports: - "127.0.0.1:5432:5432" networks: - quantdinger-network healthcheck: test: ["CMD-SHELL", "pg_isready -U quantdinger -d quantdinger"] interval: 10s timeout: 5s retries: 5 # Backend API Service backend: build: context: ./backend_api_python dockerfile: Dockerfile container_name: quantdinger-backend restart: unless-stopped depends_on: postgres: condition: service_healthy ports: - "127.0.0.1:5000:5000" volumes: # Persistent logs - ./backend_api_python/logs:/app/logs - ./backend_api_python/data:/app/data # Configuration file (optional, for development) - ./backend_api_python/.env:/app/.env environment: - PYTHON_API_HOST=0.0.0.0 - PYTHON_API_PORT=5000 - TZ=Asia/Shanghai # Database connection - DATABASE_URL=postgresql://${POSTGRES_USER:-quantdinger}:${POSTGRES_PASSWORD:-quantdinger123}@postgres:5432/${POSTGRES_DB:-quantdinger} - DB_TYPE=postgresql networks: - quantdinger-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/api/health"] interval: 30s timeout: 10s retries: 3 # Frontend Web Service frontend: build: context: ./quantdinger_vue dockerfile: Dockerfile container_name: quantdinger-frontend restart: unless-stopped ports: - "8888:80" depends_on: - backend networks: - quantdinger-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health"] interval: 30s timeout: 10s retries: 3 volumes: postgres_data: driver: local networks: quantdinger-network: driver: bridge