agent_9art/docker-compose-server.yml
jqb 5182590fad feat: 新增员工姓名绑定、客户信息补全与docker-compose配置
1.  为话术生成服务添加staffName参数,支持生成回复时使用真实员工姓名
2.  优化客户昵称补全逻辑,新增自动创建缺失客户记录功能
3.  重构前端话术推荐组件,调整客户信息展示逻辑
4.  添加完整的docker-compose-server部署配置文件
2026-06-11 16:54:29 +08:00

339 lines
9.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

version: '3.8'
services:
# ---------------------- 基础设施 ----------------------
mysql:
image: mysql:5.7
container_name: ai-assistant-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
MYSQL_DATABASE: ${MYSQL_DATABASE:-ai_assistant}
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./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", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-root}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- ai-assistant-network
redis:
image: redis:6-alpine
container_name: ai-assistant-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ai-assistant-network
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: ai-assistant-rabbitmq
restart: always
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-admin}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-admin}
volumes:
- rabbitmq_data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks:
- ai-assistant-network
# ---------------------- 后端服务 ----------------------
gateway:
build: ./backend/gateway
container_name: ai-assistant-gateway
restart: always
ports:
- "8080:8080"
volumes:
- ./gateway-application.yml:/app/config/application.yml
depends_on:
- auth-service
- archive-service
- conversation-service
- intent-service
- recommend-service
- generation-service
- kb-admin-service
- analytics-service
networks:
- ai-assistant-network
auth-service:
build: ./backend/auth-service
container_name: ai-assistant-auth
restart: always
ports:
- "8081:8081"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- MYSQL_DATABASE=ai_assistant
- SPRING_DATASOURCE_USERNAME=assistant_prod
- SPRING_DATASOURCE_PASSWORD=U%$4Tu_C3+4
- SPRING_DATASOURCE_URL=jdbc:mysql://sh-cdb-6fzlwnms.sql.tencentcdb.com:63912/ai_assistant?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
- REDIS_HOST=redis
- JWT_SECRET=${JWT_SECRET:-your-256-bit-secret-key-here-at-least-32-characters}
depends_on:
- mysql
- redis
networks:
- ai-assistant-network
archive-service:
build: ./backend/archive-service
container_name: ai-assistant-archive
restart: always
ports:
- "8082:8082"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- REDIS_HOST=redis
- RABBITMQ_HOST=rabbitmq
- WECOM_ARCHIVE_SECRET=${WECOM_ARCHIVE_SECRET:-}
- WECOM_ARCHIVE_CALLBACK_TOKEN=${WECOM_ARCHIVE_CALLBACK_TOKEN:-}
- WECOM_ARCHIVE_CALLBACK_AESKEY=${WECOM_ARCHIVE_CALLBACK_AESKEY:-}
- WECOM_ARCHIVE_SDK_PATH=${WECOM_ARCHIVE_SDK_PATH:-/app/sdk}
- ARCHIVE_REPAIR_ON_STARTUP=true
- WECOM_AGENT_SECRET=nU1xezyHyonS9rOJ9Kwo3i5OM9iuWc1TrjXf-rOYZx0
- WECOM_CONTACT_SECRET=zrZkae10k1T7bqrt-jVYjj9LQ4GgMibj-wUMy48OsyY
volumes:
- ./keys:/app/keys
# 如需真实企微SDK,取消注释下行并将Linux .so文件放入 ./sdk/linux/
- ./sdk/linux:/app/sdk
depends_on:
- mysql
- redis
- rabbitmq
networks:
- ai-assistant-network
conversation-service:
build: ./backend/conversation-service
container_name: ai-assistant-conversation
restart: always
ports:
- "8083:8083"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- REDIS_HOST=redis
- RABBITMQ_HOST=rabbitmq
depends_on:
- mysql
- redis
- rabbitmq
networks:
- ai-assistant-network
intent-service:
build: ./backend/intent-service
container_name: ai-assistant-intent
restart: always
ports:
- "8084:8084"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- REDIS_HOST=redis
- RABBITMQ_HOST=rabbitmq
depends_on:
- mysql
- redis
- rabbitmq
networks:
- ai-assistant-network
recommend-service:
build: ./backend/recommendation-service
container_name: ai-assistant-recommend
restart: always
ports:
- "8085:8085"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- REDIS_HOST=redis
- RABBITMQ_HOST=rabbitmq
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_PORT=63912
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_DATABASE=ai_assistant
depends_on:
- mysql
- redis
- rabbitmq
networks:
- ai-assistant-network
generation-service:
build: ./backend/generation-service
container_name: ai-assistant-generation
restart: always
ports:
- "8086:8086"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- REDIS_HOST=redis
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY:-}
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_PORT=63912
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_DATABASE=ai_assistant
depends_on:
- redis
networks:
- ai-assistant-network
kb-admin-service:
build: ./backend/kb-admin-service
container_name: ai-assistant-kbadmin
restart: always
ports:
- "8087:8087"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- REDIS_HOST=redis
depends_on:
- mysql
- redis
networks:
- ai-assistant-network
analytics-service:
build: ./backend/analytics-service
container_name: ai-assistant-analytics
restart: always
ports:
- "8088:8088"
environment:
- SERVER_SERVLET_ENCODING_CHARSET=UTF-8
- SERVER_SERVLET_ENCODING_ENABLED=true
- SERVER_SERVLET_ENCODING_FORCE=true
- MYSQL_HOST=sh-cdb-6fzlwnms.sql.tencentcdb.com
- MYSQL_USERNAME=assistant_prod
- MYSQL_PASSWORD=U%$4Tu_C3+4
- MYSQL_PORT=63912
- REDIS_HOST=redis
depends_on:
- mysql
- redis
networks:
- ai-assistant-network
# ---------------------- 前端服务 ----------------------
admin:
build: ./frontend/admin
container_name: ai-assistant-admin
restart: always
ports:
- "5174:80"
depends_on:
- gateway
networks:
- ai-assistant-network
sidebar:
build: ./frontend/sidebar
container_name: ai-assistant-sidebar
restart: always
ports:
- "5173:80"
depends_on:
- gateway
networks:
- ai-assistant-network
# ---------------------- 统一入口 Nginx ----------------------
nginx:
image: nginx:alpine
container_name: ai-assistant-nginx
restart: always
ports:
- "8089:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- gateway
- admin
- sidebar
networks:
- ai-assistant-network
# ---------------------- 数据卷 ----------------------
volumes:
mysql_data:
redis_data:
rabbitmq_data:
# ---------------------- 网络 ----------------------
networks:
ai-assistant-network:
driver: bridge