ccccccc / docker-compose.yml
cnmksjs's picture
Upload 49 files
24fd742 verified
version: '3.8'
services:
# MongoDB数据库
mongo:
image: mongo:7.0
container_name: chat-mongo
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password123
MONGO_INITDB_DATABASE: chatapp
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
networks:
- chat-network
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 后端服务
server:
build:
context: ./server
dockerfile: Dockerfile
container_name: chat-server
restart: unless-stopped
environment:
- NODE_ENV=production
- MONGODB_URI=mongodb://admin:password123@mongo:27017/chatapp?authSource=admin
- JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
- PORT=5000
- CLIENT_URL=http://localhost:3000
ports:
- "5000:5000"
depends_on:
mongo:
condition: service_healthy
networks:
- chat-network
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 前端服务
client:
build:
context: ./client
dockerfile: Dockerfile
container_name: chat-client
restart: unless-stopped
ports:
- "3000:80"
depends_on:
server:
condition: service_healthy
networks:
- chat-network
environment:
- VITE_API_URL=http://localhost:5000
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
mongo_data:
networks:
chat-network:
driver: bridge