Docker部署的bilibili录播姬踩坑
本文最后更新于:2024年8月11日 晚上
录播姬
配置
拉取镜像
1 |
|
映射目录
/app/logs
:日志文件/rec
:配置文件路径和录像文件路径
因为配置文件和录像文件共用一个目录,为了区分,需要在里面设置的录像保存格式里进行操作:
1 |
|
这个是我自己的格式,解释一下主干部分,剩下的自己参照官方文档:
/media
:指保存到/rec/media
文件,到时候可以映射到单独目录-v /media:/rec/media
{{areaParent}}
:主分区名称,如虚拟主播
{{areaChild}}
:子分区名称,如电台
下的唱见电台
{{roomID}}
:主播直播间号{{ qn | format_qn }}
:表示画质,默认是[原画]
{{partIndex}}
:分片标签format_date: "yyyyMMdd HH:mm:ss fff"
:这个格式表示日期类似于20230714 12:23:46 233
{{ "now" | time_zone: "Asia/Shanghai" | format_date: "yyyyMMdd" }}
:这个是日期,但你只需要关心后面的日期格式即可:yyyyMMdd
表示日期类似于格式20230714
然后拉起容器即可:
1 |
|
不过你很快就会发现权限问题,比如你在访问/recoder/logs
里的日志时只有阅读权限,没有修改权限。而配置文件你也没有权限修改。
文件权限问题
注意:因为设置了权限,所以你需要手动创建你要挂载进去的文件夹,这里指你需要手动创建/recoder/conf
文件夹和recoder/logs
文件夹,否则容器会拉起时默认使用root
权限创建!
如果你不是root
,那么你需要调整容器内的权限,否则映射出来的文件权限默认是root (750)
我们只需要修改运行指令即可:
1 |
|
-u
:让容器内以用户ID身份运行,可以使用id
来查看你自己的用户ID-e PUID XXX -e PGID
:有的容器会读取这个环境变量来配置自己的权限ID,跟-u
是两个东西,录播姬似乎不会使用-e UMASK
:权限反码,指明容器创建文件时使用的权限数字,也是环境变量,有的容器会读取,录播姬似乎不会使用,其中022
跟755
是相同的(就跟子网掩码和反子网掩码一样)
这样你就会发现在容器内查看文件权限时是1000 1000
,且用户名为I have no name!
。
不过这样你很快就会遇到文件挂载问题。
这个问题只会产生在希望挂载一个外置大容量文件夹进入容器,且希望视频保存在这个文件夹内时才需要注意,如果你想直接使用
docker cp
的方式将文件拷贝出来也可以。
文件挂载问题
容器如何将视频保存在挂载进去的大容量目录
参考我提的Issue,这里摘录部分。
目录权限检查
如果你操作的是root
用户,大概不会遇到这些问题,如果你像我一样(或者说跟ubuntu)一样新建一个有sudo
权限的用户账户,那么可能会出现这些问题。
你需要确保你挂载的文件目录的所属用户
是这个账户
- 这里假设为
ubuntu
- 假设挂载进去的大容量目录为
/media
那么你需要:
1 |
|
确认文件权限且结合你之前拉起容器时会使用-u 1000:1000
,就可以进行下一步:
将目录映射进去-v /media:/media
然后进行全局的配置,文件命名文首已经给出,然后看看配置文件能否创建。创建成功后先去创建软连接:
1 |
|
这样就创建了从挂载文件到工作区的软连接。这个时候再尝试开启直播录制,就能将视频文件存放到挂载目录,在宿主机也能看见了!