02. Docker Compose 部署
目录约定
本地部署文件目录:
/Users/Zhuanz/Documents/learn/qq-bot服务器部署目录:
/root/qq-bot笔记目录:
/Users/Zhuanz/Documents/learn/notes/qq-bot上传到服务器
本机执行:
scp -r /Users/Zhuanz/Documents/learn/qq-bot root@服务器公网IP:/root/qq-bot含义:
scp 复制文件到远程服务器
-r 递归复制整个文件夹
root@IP 用 root 用户连接服务器
:/root/qq-bot 服务器目标目录然后登录服务器:
ssh root@服务器公网IP
cd /root/qq-bot环境变量
服务器上:
cd /root/qq-bot
cp .env.example .env
vi .env本次底层使用 DeepSeek,推荐:
NEW_API_BASE_URL=http://172.17.0.1:3000/v1
NEW_API_KEY=NewAPI里给机器人的token
NEW_API_MODEL=deepseek-chat为什么是 172.17.0.1:
LangBot 在 Docker 容器里,容器内 127.0.0.1 是 LangBot 自己。
New API 暴露在宿主机 3000,所以容器访问宿主机用 Docker bridge 网关 172.17.0.1。如果 New API 不在同一台服务器,改成公网地址:
NEW_API_BASE_URL=http://服务器公网IP:3000/v1启动容器
cd /root/qq-bot
docker-compose up -d
docker-compose ps正常状态类似:
NAME IMAGE STATUS
langbot_plugin_runtime rockchin/langbot:latest Up
qqbot-langbot rockchin/langbot:latest Up
qqbot-napcat mlikiowa/napcat-docker:latest Up日志:
docker logs --tail 80 qqbot-napcat
docker logs --tail 80 qqbot-langbot
docker logs --tail 80 langbot_plugin_runtimeDocker Hub 拉镜像超时
如果报:
Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection
Client.Timeout exceeded while awaiting headers说明服务器到 Docker Hub 不稳定。
本次服务器上已经有 mihomo 代理,先确认代理可用:
curl -x http://127.0.0.1:7890 -I https://registry-1.docker.io/v2/返回:
HTTP/2 401是正常的,说明 Docker Registry 可达,只是没带认证。
让 Docker daemon 走 mihomo 代理
mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf写入:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,172.16.0.0/12,10.0.0.0/8,192.168.0.0/16"重启 Docker:
systemctl daemon-reload
systemctl restart docker
systemctl show --property=Environment docker期望看到:
Environment=HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890然后逐个拉镜像:
docker pull rockchin/langbot:latest
docker pull mlikiowa/napcat-docker:latest最后:
cd /root/qq-bot
docker-compose up -d安全组
腾讯云安全组只放行自己的公网 IP:
| 协议端口 | 来源 |
|---|---|
TCP:6099 | 你的本机公网IP/32 |
TCP:5300 | 你的本机公网IP/32 |
本机公网 IP:
curl -4 ifconfig.me2280-2285 和 5401 不需要对公网开放。