name: bccrm # Self-host stack: MongoDB + Redis + MinIO + API + Web Admin # (บนเครื่อง dev ที่มีบริการเหล่านี้อยู่แล้ว รันแค่ api/admin ก็พอ — ดู README) services: mongo: image: mongo:7 ports: - "27017:27017" volumes: - mongo_data:/data/db healthcheck: test: ["CMD", "mongosh", "--quiet", "--eval", "db.runCommand('ping').ok"] interval: 5s timeout: 3s retries: 10 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: bccrm MINIO_ROOT_PASSWORD: bccrm-secret-change-me ports: - "9000:9000" # S3 API - "9001:9001" # console volumes: - minio_data:/data api: build: context: . dockerfile: apps/api/Dockerfile env_file: .env environment: DB_MODE: mongo MONGODB_URL: mongodb://mongo:27017/bccrm REDIS_URL: redis://redis:6379 S3_ENDPOINT: http://minio:9000 ports: - "3001:3001" depends_on: mongo: condition: service_healthy redis: condition: service_healthy admin: build: context: . dockerfile: apps/admin/Dockerfile environment: NEXT_PUBLIC_API_URL: http://localhost:3001 ports: - "3000:3000" depends_on: - api volumes: mongo_data: redis_data: minio_data: