Docker Copmpose部署
大约 3 分钟
部署教程
创建Docker compose部署文件
docker-compose.yml 配置:
version: "3.5" # 使用的Docker Compose文件格式版本
services:
# Tailchat核心服务
service-core:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/gateway,core/user/*.service.js,core/group/*.service.js,core/chat/*.service.js,core/file,core/plugin/registry,core/config
PORT: 3000
depends_on:
- mongo
- redis
- minio
labels:
- "traefik.enable=true"
- "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
- "traefik.http.services.api-gw.loadbalancer.server.port=3000"
networks:
- internal
# 开放平台服务
service-openapi:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: openapi/app,openapi/bot,openapi/integration,openapi/oidc/oidc
OPENAPI_PORT: 3003
OPENAPI_UNDER_PROXY: "true"
depends_on:
- mongo
- redis
- minio
labels:
- "traefik.enable=true"
- "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
- "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
networks:
- internal
# 插件服务(所有插件)
service-all-plugins:
build:
context: .
image: tailchat
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICEDIR: plugins
depends_on:
- mongo
- redis
- minio
networks:
- internal
# 数据库
mongo:
image: mongo:4
restart: on-failure
volumes:
- ./data:/data/db # 更改数据存储位置为相对于 YAML 文件的路径
networks:
- internal
# 数据缓存和传输器
redis:
image: redis:alpine
restart: on-failure
networks:
- internal
# 持久存储
minio:
image: minio/minio
restart: on-failure
networks:
- internal
environment:
MINIO_ROOT_USER: tailchat
MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
volumes:
- ./storage:/data # 更改持久存储位置为相对于 YAML 文件的路径
command: minio server /data --console-address ":9001"
# 路由器
traefik:
image: traefik:v2.1
restart: unless-stopped
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:80"
- "--entryPoints.web.forwardedHeaders.insecure"
ports:
- 56010:80 # 容器端口80映射到主机端口56010
- 127.0.0.1:11001:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- internal
- default
networks:
internal:
name: tailchat-internal
volumes:
data:
storage:
修改部分:
ports:
- 56000:80
将56000改为你想部署的网页端口,记得反向代理该端口
docker-compose.env 配置
# 是否启用日志记录
LOGGER=true
# 日志级别(例如: info, debug, error)
LOGLEVEL=info
# 服务目录(服务的存储位置)
SERVICEDIR=services
# 数据传输器配置,使用Redis作为传输器
TRANSPORTER=redis://redis:6379
# Redis数据库连接信息
REDIS_URL=redis://redis:6379
# MongoDB数据库连接信息
MONGO_URL=mongodb://mongo/tailchat
# 用于加密和验证的密钥
SECRET=KJUYqm9rHaHQQqujCtPtzAsf
# 文件服务相关配置
API_URL=https://t.sap560.com
# Minio对象存储相关配置
MINIO_URL=minio:9000
MINIO_USER=tailchat
MINIO_PASS=com.msgbyte.tailchat
# SMTP电子邮件发送器配置
SMTP_SENDER="五六零网校 sap560@163.com"
SMTP_URI=smtps://sap560:GSHQYFAWWD@smtp.163.com:465/?pool=true
# 度量标准(Metrics)相关配置
PROMETHEUS=1
# 管理员用户和密码
ADMIN_USER=sap560
ADMIN_PASS=k7V8tp3YBXXX
#关禁止用户创建群组
DISABLE_CREATE_GROUP=1
#设置上传附件大小
FILE_LIMIT= 5242880
#禁止游客访问
DISABLE_GUEST_LOGIN=1
#自动加入网校群组
AUTOJOIN_GROUP_ID=653cd2589c5ccd4b5c6f7f53
修改部分:
- SECRET=KJUYqm9rHaHQQqujCtPtzAsf #修改为你自己的秘钥,建议设置随机的字符串
- API_URL=https://t.sap560.com #修改为你的网址
- SMTP_SENDER="五六零网校 sap560@163.com" #修改为你的邮箱,前面中文为收件人看到的信件名
- SMTP_URI=smtps://sap560: GSHQYFAWWD@smtp.163.com:465/?pool=true #此处配置的是163邮箱,注意用户名不需要加@163.com;密码为SMTP密码,并非登录密码。
admin.yml 配置
version: "3.3" # 使用的Docker Compose文件格式版本
services:
# 后台应用
tailchat-admin:
build:
context: ../ # 使用上级目录作为构建上下文
image: tailchat # 使用名为 "tailchat" 的镜像
restart: unless-stopped # 遇到错误时重启容器
env_file: docker-compose.env # 从环境文件加载环境变量
depends_on:
- mongo # 依赖于名为 "mongo" 的服务
- redis # 依赖于名为 "redis" 的服务
labels:
- "traefik.enable=true" # 启用Traefik反向代理
- "traefik.http.routers.admin.rule=PathPrefix(`/admin`)" # 使用路径前缀匹配到后端服务
- "traefik.http.services.admin.loadbalancer.server.port=3000" # 定义后端服务端口
networks:
- internal # 连接到名为 "internal" 的Docker网络
command: pnpm start:admin # 启动命令,使用pnpm启动后台应用
一键部署命令
docker pull moonrailgun/tailchat
&&
docker tag moonrailgun/tailchat tailchat
&&
docker-compose -f docker-compose.yml -f admin.yml up -d