docker-compose.yml•3.21 kB
version: '3.8'
services:
# 小红书MCP主服务
xiaohongshu-mcp:
build: .
container_name: xiaohongshu-mcp
ports:
- "3000:3000" # MCP服务器端口
- "3001:3001" # WebSocket端口
environment:
- NODE_ENV=production
- DB_HOST=mysql
- DB_PORT=3306
- DB_NAME=xiaohongshu_mcp
- DB_USER=root
- DB_PASSWORD=xiaohongshu123
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./uploads:/app/uploads
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
networks:
- xiaohongshu-network
# MySQL数据库
mysql:
image: mysql:8.0
container_name: xiaohongshu-mysql
environment:
MYSQL_ROOT_PASSWORD: xiaohongshu123
MYSQL_DATABASE: xiaohongshu_mcp
MYSQL_USER: xiaohongshu
MYSQL_PASSWORD: xiaohongshu123
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
restart: unless-stopped
networks:
- xiaohongshu-network
# Redis缓存
redis:
image: redis:7-alpine
container_name: xiaohongshu-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
healthcheck:
test: ["CMD", "redis-cli", "ping"]
timeout: 20s
retries: 10
restart: unless-stopped
networks:
- xiaohongshu-network
# Directus管理后台
directus:
image: directus/directus:10.13
container_name: xiaohongshu-directus
ports:
- "8055:8055"
environment:
- KEY=xiaohongshu-directus-key
- SECRET=xiaohongshu-directus-secret
- ADMIN_EMAIL=admin@xiaohongshu.com
- ADMIN_PASSWORD=xiaohongshu123
- DB_CLIENT=mysql2
- DB_HOST=mysql
- DB_PORT=3306
- DB_DATABASE=xiaohongshu_mcp
- DB_USER=root
- DB_PASSWORD=xiaohongshu123
- REDIS_HOST=redis
- REDIS_PORT=6379
volumes:
- directus_uploads:/directus/uploads
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
restart: unless-stopped
networks:
- xiaohongshu-network
# Nginx反向代理
nginx:
image: nginx:alpine
container_name: xiaohongshu-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/nginx/ssl
depends_on:
- xiaohongshu-mcp
- directus
restart: unless-stopped
networks:
- xiaohongshu-network
volumes:
mysql_data:
driver: local
redis_data:
driver: local
directus_uploads:
driver: local
networks:
xiaohongshu-network:
driver: bridge