宝塔面板部署:Docker 跑业务,面板管域名与证书
宝塔面板是国内最常见的服务器运维面板。这套系统跟宝塔不冲突,推荐组合是: 宝塔管 Nginx / SSL / 站点,Docker 管业务容器,两者各管一段。
一、装 Docker 环境
- 宝塔面板 → 左侧「Docker」→ 首次进入按提示安装 Docker 服务;
- 确认 Compose 版本是 v2:终端执行
docker compose version,能看到v2.x才算过; - 如果商店里装的是老的
docker-compose(v1),请卸载后装 Compose v2 插件 —— v1 在更新已存在容器时会崩。
二、把包拉到站点目录
- 宝塔 →「文件」→ 进入
/www/wwwroot→ 新建目录yaka; - 进到
yaka目录点「远程下载」,把下面这个直链粘进去(文件名保持yaka-instance.tar.gz):
https://yaka-dist.tos-cn-beijing.volces.com/releases/latest/yaka-instance.tar.gz
- 或者直接在宝塔「终端」里拉 —— 下载 + 解压一次搞定,还省得手动右键解压:
mkdir -p /www/wwwroot/yaka && cd /www/wwwroot/yaka
curl -fsSLO https://yaka-dist.tos-cn-beijing.volces.com/releases/latest/yaka-instance.tar.gz
tar -xzf yaka-instance.tar.gz && cd yaka-instance-*
ls # 确认解压后有 install.sh / docker-compose.yml / build/
三、改端口再安装
宝塔的 Nginx 已经占着 80 / 443,所以实例必须换个端口对外:
cd /www/wwwroot/yaka
cp .env.example .env
sed -i 's/^HTTP_PORT=.*/HTTP_PORT=8088/' .env
sed -i 's/^HTTPS_PORT=.*/HTTPS_PORT=8443/' .env
# 顺手把 PUBLIC_BASE_URL 改成你的域名
sed -i 's#^PUBLIC_BASE_URL=.*#PUBLIC_BASE_URL=https://你的域名#' .env
bash install.sh
装完先本机验证,不要急着配站点:
curl -fsS http://127.0.0.1:8088/healthz
四、建站 + 反向代理 + SSL
- 宝塔 →「网站」→ 添加站点,域名填你的域名,PHP 版本选纯静态(不装 PHP 环境也行);
- 进入站点 →「反向代理」→ 添加反向代理,目标 URL 填
http://127.0.0.1:8088,发送域名填$host; - 在该反代配置里确认存在这四个头(宝塔模板一般已带,缺了就补):
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
- 站点 →「SSL」→ Let's Encrypt 申请证书(域名解析要先指过来),开启「强制 HTTPS」。
五、踩坑清单
| 现象 | 原因与处置 |
|---|---|
| 装到一半提示端口占用 | 80 / 443 被宝塔 Nginx 占了。.env 里改 HTTP_PORT=8088 再装。 |
| 站点打开 502 | 反代目标写成了 https,或端口不是 .env 里那个。用
curl -I http://127.0.0.1:8088/healthz 先分清楚是「实例没起」还是「反代配错」。 |
| 后台访客 IP 全是 127.0.0.1 | 反代没传 X-Forwarded-For;并在 .env 的
TRUSTED_PROXIES 里加上 127.0.0.1/32。 |
| Let's Encrypt 申请失败 | 80 端口没通(安全组 / 防火墙),或域名没解析到本机。先 telnet 你的域名 80 验通。
内网机器只能用 DNS-01 方式签。 |
| 宝塔「计划任务」备份不到容器数据 | 数据在 Docker 命名卷里,不在站点目录。用包内 ./backup.sh 出 dump,
再用宝塔计划任务搬运备份文件。 |
| 改完 .env 重启容器没效果 | docker compose up -d --no-deps --force-recreate yaka-ext,不是 restart。 |

