# DDTV_Docker版使用教程(Linux)
Docker 镜像在 Docker Hub (opens new window) 和 GitHub Container registry (opens new window) 上提供。
两个位置提供的镜像完全一样,都是对 DDTV 发行版本的简单包装。
# 先决条件
- Linux
- 容器引擎,如 Docker-ce 18.03 或更高版本 (安装教程 (opens new window))、Podman 等
DockerHub 更换镜像源
# 可用镜像
Docker 项目名 | 特点 |
---|---|
DDTV_CLI | 重启容器即可更新 DDTV |
DDTV_WEB_Server | 重启容器即可更新 DDTV |
DDTV_Deps | 只含 DDTV 必须依赖 |
在容器中更新 DDTV
重启容器即可,配置AutoInsallUpdate
目前仅供DDTV_GUI使用。
# 镜像名
Docker 项目名 | GHCR 镜像名 | Docker Hub 镜像名 |
---|---|---|
DDTV_CLI | ghcr.io/chkzl/ddtv/cli | ddtv/cli |
DDTV_WEB_Server | ghcr.io/chkzl/ddtv/webserver | ddtv/webserver |
DDTV_Deps | ghcr.io/chkzl/ddtv/deps | ddtv/deps |
# CLI / WEB_Server 支持的架构及可用标签
系统 \ 架构 | amd64 | arm64v8 | arm32v7 | 可用标签 |
---|---|---|---|---|
alpine | ✅ | ❓ 1 | ❓ 1 | alpine 3.0-alpine 3.0.*.*-alpine |
debian | ✅ | ✅ | ✅ | latest debian 3.0 3.0.*.* |
Tip 1
受 DDTV 依赖影响,目前 alpine arm 下 DDTV 的日志功能、二维码功能
无法使用,并因此存在内存泄露问题(日志及内存泄露问题应该解决了,等个有缘人测试.jpg),不建议使用。
# 最佳实践
查阅修改docker-ddtv.env
后运行
# 方法一:修改docker-compose.yml
后自行运行
wget https://raw.githubusercontent.com/moomiji/docker-ddtv/docker/docker-ddtv.env
nano docker-ddtv.env
wget https://raw.githubusercontent.com/moomiji/docker-ddtv/docker/docker-compose.yml
nano docker-compose.yml
> version: '3'
> services:
> DDTV.service_name:
> env_file:
> - docker-ddtv.env
> ...
# env_file 优先级低于 environment 指定的环境变量
# 方法二:使用参数--env-file
运行
- docker cli
wget https://raw.githubusercontent.com/moomiji/docker-ddtv/docker/docker-ddtv.env
vi docker-ddtv.env
sudo docker run --env-file=./docker-ddtv.env ...
# docker cli 运行容器
# 运行 DDTV_WEB_Server
sudo docker volume create DDTV_Rec
sudo docker run -d -p 11419:11419 \ # \后面不能有字符
-v DDTV_Rec:/DDTV/Rec \ # 必须,挂载卷或文件夹;否则会挂载匿名卷
-v ${CONFIG_DIR}:/DDTV \ # 可选,持久化 DDTV_WEB_Server 与 配置文件
-e PUID=$(id -u) \
-e PGID=$(id -g) \
--name DDTV_WEB_Server \
ghcr.io/chkzl/ddtv/webserver
# 删除容器
sudo docker rm -f DDTV_WEB_Server
# 删除录制文件
sudo docker volume rm DDTV_Rec
# 运行 DDTV_CLI
sudo docker volume create DDTV_Rec
sudo docker run -d -p 11419:11419 \ # \后面不能有字符
-v DDTV_Rec:/DDTV/Rec \ # 必须,挂载卷或文件夹;否则会挂载匿名卷
-v ${CONFIG_DIR}:/DDTV \ # 可选,持久化 DDTV_CLI 与 配置文件
-e PUID=$(id -u) \
-e PGID=$(id -g) \
--name DDTV_CLI \
ghcr.io/chkzl/ddtv/cli
# 删除容器
sudo docker rm -f DDTV_CLI
# 删除录制文件
sudo docker volume rm DDTV_Rec
# 单独挂载配置文件
# CLI / WEB_Server
-v ${PWD}/DDTV:/DDTV \ # 可选,持久化 DDTV_CLI 与 配置文件
# 替换成
-v ${PWD}/DDTV/RoomListConfig.json:/DDTV/RoomListConfig.json \
-v ${PWD}/DDTV/DDTV_Config.ini:/DDTV/DDTV_Config.ini \
-v ${PWD}/DDTV/BiliUser.ini:/DDTV/BiliUser.ini \
TIP
若单独挂载RoomListConfig.json,环境变量RoomList、变量BiliUser 和 CLI / WEB_Server 配置文件变量将不可用。2
# 可用环境变量
# Docker 版独有环境变量
参数名 | 格式 | 默认值 | 说明 | 可用镜像 |
---|---|---|---|---|
TZ | 州/城市 | Asia/Shanghai | 时区 | cli webserver |
PUID | num | 0 | 运行 DDTV 的用户 ID | cli webserver |
PGID | num | 0 | 运行 DDTV 的用户组 ID | cli webserver |
RoomList 2 | json | {"data":[]} | 来自同名配置文件 | cli webserver |
BiliUser 2 | ini | 无 | 来自同名配置文件 | cli webserver |
RoomList \ BiliUser 的食用方法
务必使用单引号
括起变量;使用\n
转义换行符,例如:
-e RoomList='{"data":[{"name":"蒂蒂媞薇_Official", "Description":"", "RoomId":21446992, "UID":408490081, "IsAutoRec":false, "IsRemind":false, "IsRecDanmu":false, "Like":false, "Shell":""}]}' \
-e BiliUser='cookie=...\nExTime=...\ncsrf=...\nuid=...' \
# CLI / WEB_Server 配置文件常用环境变量 2
参数名与DDTV Core通用配置文件的配置名完全相同。
参数名 | 格式 | 默认值 | 说明 |
---|---|---|---|
RoomListConfig | 路径 | ./RoomListConfig.json | RoomListConfig.json文件位置 |
IsHls | bool | True | 是否优先使用HLS进行录制 |
IsDev | bool | False | 是否使用开发版更新模式 |
IsAutoTranscod | bool | False | 是否启用自动转码 |
IsFlvSplit | bool | False | 是否启用全局FLV文件按大小切分开关,注:启动后自动合并、自动转码失效 |
FlvSplitSize | longint | 1073741824 | 文件切分的大小(byte) |
WebUserName | string | ami | WEB登陆使用的用户名 |
WebPassword | string | ddtv | WEB登陆使用的密码 |
Shell | bool | False | 用于控制下载完成后是否执行对应房间的Shell命令 |
WebHookUrl | string | string.Empty | WebHook的目标地址 |
使用dev开发版
法1:初次启动容器,可设置环境变量IsDev=True
后启动容器 2,在登陆阿B(即配置文件写入)后关闭容器
法2:停止容器,修改配置文件DDTV_Config.ini的配置IsDev=True
之后启动容器获取dev更新
Tip 2
变量只在初次启动
,即配置或配置文件不存在
时可用。
更多可用变量见 官网配置说明 与 docker-ddtv.env (opens new window)。
# CLI / WEB_Server 可用运行参数
sudo docker run \
... \
镜像[:标签] \
--no-update \ # 容器重启后不自动更新 DDTV
--verbose \ # 脚本输出更多信息(若服务器多人使用docker,请谨慎使用该参数,因为会将DDTV中的个人信息\配置输出到docker日志中)