跳转到内容

Docker 部署

目标:用 Docker Compose 在 VPS 上跑起 huangxd-/danmu_api,改好 TOKENADMIN_TOKEN;需要时再加 Watchtower。

命令已拆成单条,按顺序执行即可。

在自己电脑上打开终端,先连接服务器。

如果 SSH 端口就是默认的 22,直接执行:

Terminal window
ssh root@你的服务器IP

如果服务商给的是其他端口,就执行:

Terminal window
ssh -p 端口 root@你的服务器IP

第一次连接时,终端通常会询问是否继续,输入 yes,再回车。 如果当前服务器不是 root 用户,就把上面的 root 换成服务商给你的用户名,例如 ubuntu

社区教程里通过 SSH 登录 Ubuntu VPS 的终端截图
先登录 VPS,再继续后面的 Docker 安装和部署。

第 2 步:先装 Docker 和 Docker Compose

Section titled “第 2 步:先装 Docker 和 Docker Compose”

先按你的机器情况选 1 种安装方式:

  • 官方网络正常、想最省事:用 Docker 官方脚本
  • 国内 VPS 拉取慢:用 LinuxMirrors 的 Docker 脚本
  • 机器刚装好,想顺手换系统源再装 Docker:用 OCSS 脚本
  1. 先装 Docker:
Terminal window
curl -fsSL https://get.docker.com | sudo bash
  1. 再装 nano
Terminal window
sudo apt install -y nano
  1. 先装 Docker:
Terminal window
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
  1. 再装 nano
Terminal window
sudo apt install -y nano
  1. 先跑脚本:
Terminal window
bash <(curl -sSL https://cdn.jsdelivr.net/gh/Master08s/ocss@latest/main.sh)
  1. 再装 nano
Terminal window
sudo apt install -y nano

装好后再按顺序确认:

  1. 先看 Docker:
Terminal window
docker --version
  1. 再看 Docker Compose:
Terminal window
docker compose version

能正常看到版本号,就继续下一步。

后面统一在这个目录里操作:

  1. 先创建目录:
Terminal window
mkdir -p ~/danmu-api
  1. 再进入目录:
Terminal window
cd ~/danmu-api
  1. 最后确认当前目录:
Terminal window
pwd

还在 ~/danmu-api 目录里,先打开文件:

  1. 先回到部署目录:
Terminal window
cd ~/danmu-api
  1. 再打开文件:
Terminal window
nano docker-compose.yml

把下面这段内容原样粘贴进去:

services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
ports:
- "9321:9321"
volumes:
- ./config:/app/config
- ./.cache:/app/.cache
restart: unless-stopped

粘贴完以后按这个顺序保存:

  1. Ctrl + O
  2. 回车
  3. Ctrl + X

这份 Compose 只负责主服务。 后面的 Watchtower 单独放到另一个目录里,更适合长期维护;这样启动时也能直接用 docker compose up -d

社区面板教程里创建 docker-compose.yml 的截图
主线先把 danmu-api 的 Compose 文件写好,再继续后面的第一次启动。

第 5 步:第一次启动,自动生成 config/.env

Section titled “第 5 步:第一次启动,自动生成 config/.env”

按顺序执行:

  1. 先启动服务:
Terminal window
docker compose up -d
  1. 再看容器状态:
Terminal window
docker compose ps
  1. 最后确认 config 目录里已经出现 .env
Terminal window
ls -la config

这一步完成后,宿主机的 ~/danmu-api/config/.env 会自动出现。 如果已经看到 .env,就继续下一步。

社区面板教程里看到 config 目录和 env 文件的截图
第一次启动后,先确认 config 目录里已经出现 .env

第 6 步:打开 config/.env,只改这两项

Section titled “第 6 步:打开 config/.env,只改这两项”

按顺序执行:

  1. 先回到部署目录:
Terminal window
cd ~/danmu-api
  1. 再打开配置文件:
Terminal window
nano config/.env

先确认这两项:

TOKEN=***
ADMIN_TOKEN=***

建议这样处理:

  • TOKEN 先保持 87654321
  • ADMIN_TOKEN 改成自己的值
  • 如果 ADMIN_TOKEN 这一行前面带 #,先把 # 删除再保存

保存顺序:

  1. Ctrl + O
  2. 回车
  3. Ctrl + X

正常保存后,一般不用重启。 当前这条 Docker 部署线支持热更新,改完 config/.env 后通常会自动生效。

如果你保存后发现页面还是旧值,或者管理员页面没有按预期变化,再按顺序手动重启一次就行,不用纠结是不是热更新没生效:

  1. 先重启主服务:
Terminal window
docker compose restart danmu-api
  1. 再确认容器状态:
Terminal window
docker compose ps

第 7 步:后面改变量,直接进前端 系统配置

Section titled “第 7 步:后面改变量,直接进前端 系统配置”
http://你的服务器IP:9321/你的ADMIN_TOKEN
用户实际操作时在管理员 UI 里打开系统配置页面的截图
以后改变量,直接进 系统配置 改就行。Docker 这条线大多数配置支持热更新。

先打开普通页面:

http://你的服务器IP:9321/87654321

再测搜索接口:

http://你的服务器IP:9321/api/v2/search/anime?keyword=凡人修仙传

再打开管理员页面:

http://你的服务器IP:9321/你的ADMIN_TOKEN

这 3 个地址都能正常打开,就说明部署已经跑通。

社区教程里测试 danmu_api 页面和接口的截图
服务跑通后,再继续处理自动更新。

第 9 步:需要自动更新的话,再单独加 Watchtower

Section titled “第 9 步:需要自动更新的话,再单独加 Watchtower”

如果你想让镜像后面自动检查更新,就单独给 Watchtower 准备一个目录:

  1. 先创建目录:
Terminal window
mkdir -p ~/danmu-api-watchtower
  1. 再进入目录:
Terminal window
cd ~/danmu-api-watchtower
  1. 最后打开配置文件:
Terminal window
nano docker-compose.yml

把下面这段内容原样粘贴进去:

services:
watchtower:
image: nickfedor/watchtower
container_name: watchtower-gx
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
command:
- --cleanup
- --interval
- "12600"
- danmu-api

粘贴完以后同样按这个顺序保存:

  1. Ctrl + O
  2. 回车
  3. Ctrl + X

然后按顺序启动它:

  1. 先回到 Watchtower 目录:
Terminal window
cd ~/danmu-api-watchtower
  1. 再启动容器:
Terminal window
docker compose up -d
  1. 再看容器状态:
Terminal window
docker compose ps
  1. 最后看最近日志:
Terminal window
docker compose logs --tail=30 watchtower

这里虽然 Watchtower 放在另一个目录里,但它监控的还是前面主服务目录里启动出来的 danmu-api 容器。 只要下面两项没改错,就能正常监控:

  1. container_name 还是 danmu-api
  2. /var/run/docker.sock:/var/run/docker.sock 还保留着
  • “12600”:检查间隔,单位是秒;这里就是每 12600 秒检查一次
  • danmu-api:要监控的容器名,要和主服务里的 container_name 保持一致
  • TZ=Asia/Shanghai:日志和时间按上海时区显示
  • —cleanup:更新后顺手清掉旧镜像

正常情况下,会看到 Watchtower 已经启动,并显示下一次检查时间。

社区教程里把 Watchtower 单独写成一份 Compose 配置的截图
这一步的重点是把 Watchtower 单独放一份 Compose 配置里,再单独启动。

如果你只想监控这一个容器,也可以把 Watchtower 放到同一个 yml

Section titled “如果你只想监控这一个容器,也可以把 Watchtower 放到同一个 yml”

上游文档也提供了把 watchtowerdanmu-api 写在同一个 Compose 文件里的示例。 如果这台机器就跑这一个容器,也可以直接改成下面这样:

services:
danmu-api:
image: logvar/danmu-api:latest
container_name: danmu-api
ports:
- "9321:9321"
volumes:
- ./config:/app/config
- ./.cache:/app/.cache
restart: unless-stopped
watchtower:
image: nickfedor/watchtower
container_name: watchtower-gx
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
command:
- --cleanup
- --interval
- "12600"
- danmu-api

需要手动更新时,按顺序执行:

  1. 先回到主服务目录:
Terminal window
cd ~/danmu-api
  1. 再拉最新镜像:
Terminal window
docker compose pull
  1. 最后重新启动:
Terminal window
docker compose up -d

先检查这两个地方有没有放行 9321

  • 服务器自己的防火墙
  • 云厂商安全组

如果当前机器用的是 UFW,可以先执行:

Terminal window
sudo ufw allow 9321/tcp

说明 Docker Compose 插件没有装好,回到第 2 步重新执行你选的那组安装命令即可。

如果你是单独目录部署的,就按这个顺序检查:

  1. ~/danmu-api-watchtower/docker-compose.yml 里是不是写的 image: nickfedor/watchtower
  2. /var/run/docker.sock:/var/run/docker.sock 有没有保留
  3. 日志里有没有正常看到下一次检查时间

参考来源:huangxd-/danmu_api README、LinuxMirrors Docker 脚本、Master08s / OCSS 社区脚本、Docker 官方安装文档Server World 的 SSH 截图,以及 社区 Watchtower Compose 教程 中公开截图。