# Production stack — รันบน server (docker compose -f docker-compose.prod.yml --env-file .env up -d --build) # โดเมน: Caddy บน host proxy tms.bcaicloud.com → 127.0.0.1:3320 (frontend, /api/* rewrite ต่อไป backend ในเน็ตเวิร์ก) # backend เปิดไว้ที่ 127.0.0.1:3321 (เผื่อ debug; host port 8081 ถูก zkteco-adms ใช้อยู่) services: mongodb: image: mongo:7 container_name: bctms-mongodb restart: unless-stopped environment: MONGO_INITDB_DATABASE: bctms volumes: - mongo_data:/data/db networks: [bctms] postgres: image: postgres:16-alpine container_name: bctms-postgres restart: unless-stopped environment: POSTGRES_DB: bctms POSTGRES_USER: bctms POSTGRES_PASSWORD: ${PG_PASSWORD:-bctms_prod_change_me} volumes: - pg_data:/var/lib/postgresql/data networks: [bctms] clickhouse: image: clickhouse/clickhouse-server:24.8-alpine container_name: bctms-clickhouse restart: unless-stopped environment: CLICKHOUSE_PASSWORD: ${CH_PASSWORD:-bctms_ch_change_me} volumes: - ch_data:/var/lib/clickhouse networks: [bctms] backend: build: ./backend container_name: bctms-backend restart: unless-stopped environment: PORT: "8081" MONGO_URI: mongodb://mongodb:27017/bctms PG_DSN: postgres://bctms:${PG_PASSWORD:-bctms_prod_change_me}@postgres:5432/bctms CLICKHOUSE_URL: http://default:${CH_PASSWORD:-bctms_ch_change_me}@clickhouse:8123 TZ: Asia/Bangkok ports: - "127.0.0.1:3401:8081" depends_on: [mongodb, postgres, clickhouse] networks: [bctms] frontend: build: context: ./frontend args: API_INTERNAL_URL: http://backend:8081 container_name: bctms-frontend restart: unless-stopped environment: API_INTERNAL_URL: http://backend:8081 ports: - "127.0.0.1:3400:3220" depends_on: [backend] networks: [bctms] volumes: mongo_data: pg_data: ch_data: networks: bctms: name: bctms