💡
本文主要解决:希望安装在docker安装的Nextcloud中再安装ffmpeg等其他依赖,而又不想自己写一个新的Dockerfile,或者使用第三方的image的问题。
安装方法:
docker run -p 80:80 --entrypoint /bin/sh nextcloud -c "apt-get update && apt-get install -y ffmpeg && /entrypoint.sh apache2-foreground"
原理解析:
通过下面这个命令:
sh docker image inspect nextcloud
我们可以知道,Nextcloud的官方镜像是通过运行/entrypoint.sh并给与一个参数“apache2-foreground”来启动的
因此为了在Nextcloud启动前安装好ffmpeg,我们只需要将entrypoint改为/bin/sh,然后在CMD中先安装依赖,最后启动Nextcloud的脚本即可。
方案比较
Entrypoint方案
好处:不需要定制image,对于运行在K8S中的Nextcloud比较方便。每次只需要直接拉取官方镜像就能保证自己的Nextcloud是官方最新版,且依赖都会自动安装。
坏处:每次都需要下载一次ffmpeg。启动速度强依赖于网速。
Dockerfile方案
好处:简单快捷易操作。可以用Dockerfile通过代码仓库实现对依赖的版本管理。
坏处:每次升级nextcloud都需要重新打镜像。而且需要有一个自己的镜像仓库(比如注册docker hub)。
第三方镜像
好处:完全无脑。
坏处:版本更新不及时。第三方镜像可能存在安全隐患。
放弃ffmpeg
好处:世上无难事,只要肯放弃。我是用ffmpeg做缩略图,感觉效果其实很一般。
坏处:你失去了一个功能。