71 lines
1.6 KiB
YAML
71 lines
1.6 KiB
YAML
|
|
version: '3.8'
|
||
|
|
|
||
|
|
services:
|
||
|
|
# MongoDB数据库
|
||
|
|
mongodb:
|
||
|
|
image: mongo:7
|
||
|
|
container_name: ai-chatroom-mongodb
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "27017:27017"
|
||
|
|
volumes:
|
||
|
|
- mongodb_data:/data/db
|
||
|
|
environment:
|
||
|
|
MONGO_INITDB_ROOT_USERNAME: admin
|
||
|
|
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-chatroom123}
|
||
|
|
networks:
|
||
|
|
- chatroom-network
|
||
|
|
healthcheck:
|
||
|
|
test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
|
||
|
|
interval: 10s
|
||
|
|
timeout: 5s
|
||
|
|
retries: 5
|
||
|
|
|
||
|
|
# 后端服务
|
||
|
|
backend:
|
||
|
|
build:
|
||
|
|
context: ./backend
|
||
|
|
dockerfile: Dockerfile
|
||
|
|
container_name: ai-chatroom-backend
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "8000:8000"
|
||
|
|
depends_on:
|
||
|
|
mongodb:
|
||
|
|
condition: service_healthy
|
||
|
|
environment:
|
||
|
|
- MONGODB_URL=mongodb://admin:${MONGO_PASSWORD:-chatroom123}@mongodb:27017
|
||
|
|
- MONGODB_DB=ai_chatroom
|
||
|
|
- HOST=0.0.0.0
|
||
|
|
- PORT=8000
|
||
|
|
- DEBUG=${DEBUG:-false}
|
||
|
|
- SECRET_KEY=${SECRET_KEY:-change-this-in-production}
|
||
|
|
- ENCRYPTION_KEY=${ENCRYPTION_KEY:-your-32-byte-encryption-key-here}
|
||
|
|
volumes:
|
||
|
|
- ./backend:/app
|
||
|
|
networks:
|
||
|
|
- chatroom-network
|
||
|
|
|
||
|
|
# 前端服务
|
||
|
|
frontend:
|
||
|
|
build:
|
||
|
|
context: ./frontend
|
||
|
|
dockerfile: Dockerfile
|
||
|
|
container_name: ai-chatroom-frontend
|
||
|
|
restart: unless-stopped
|
||
|
|
ports:
|
||
|
|
- "3000:80"
|
||
|
|
depends_on:
|
||
|
|
- backend
|
||
|
|
environment:
|
||
|
|
- VITE_API_URL=http://backend:8000
|
||
|
|
networks:
|
||
|
|
- chatroom-network
|
||
|
|
|
||
|
|
networks:
|
||
|
|
chatroom-network:
|
||
|
|
driver: bridge
|
||
|
|
|
||
|
|
volumes:
|
||
|
|
mongodb_data:
|