宝塔面板部署:Docker 跑业务,面板管域名与证书

雅卡团队 · 2026-10-20T16:00

宝塔面板是国内最常见的服务器运维面板。这套系统跟宝塔不冲突,推荐组合是: 宝塔管 Nginx / SSL / 站点,Docker 管业务容器,两者各管一段。

一、装 Docker 环境

  1. 宝塔面板 → 左侧「Docker」→ 首次进入按提示安装 Docker 服务;
  2. 确认 Compose 版本是 v2:终端执行 docker compose version,能看到 v2.x 才算过;
  3. 如果商店里装的是老的 docker-compose(v1),请卸载后装 Compose v2 插件 —— v1 在更新已存在容器时会崩。

二、把包拉到站点目录

  1. 宝塔 →「文件」→ 进入 /www/wwwroot → 新建目录 yaka;
  2. 进到 yaka 目录点「远程下载」,把下面这个直链粘进去(文件名保持 yaka-instance.tar.gz):
https://yaka-dist.tos-cn-beijing.volces.com/releases/latest/yaka-instance.tar.gz
  1. 或者直接在宝塔「终端」里拉 —— 下载 + 解压一次搞定,还省得手动右键解压:
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

  1. 宝塔 →「网站」→ 添加站点,域名填你的域名,PHP 版本选纯静态(不装 PHP 环境也行);
  2. 进入站点 →「反向代理」→ 添加反向代理,目标 URL 填 http://127.0.0.1:8088,发送域名填 $host;
  3. 在该反代配置里确认存在这四个头(宝塔模板一般已带,缺了就补):
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;
  1. 站点 →「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。