How:
docker run -p 80:80 --entrypoint /bin/sh nextcloud -c "apt-get update && apt-get install -y ffmpeg && /entrypoint.sh apache2-foreground"
Why:
By the following command:
docker image inspect nextcloud
We can see that the official image of Nextcloud is started by running /entrypoint.sh and giving a parameter "apache2-foreground"
Therefore, in order to install ffmpeg before Nextcloud starts, we only need to change the entrypoint to /bin/sh, then install the dependencies in CMD, and finally start the Nextcloud script.
Solution comparison:
Entrypoint
Pros: No need to customize the image, it is more convenient for Nextcloud running in K8S. Every time you only need to directly pull the official image, you can ensure that your Nextcloud is the latest official version, and the dependencies will be installed automatically.
Cons: ffmpeg needs to be downloaded once every time. The startup speed is strongly dependent on the network speed.
Dockerfile
Pros: Simple, quick and easy to operate. Through the code repository, Dockerfile can be used to implement version management of dependencies.
Cons: Every time you upgrade nextcloud, you need to rebuild image. And you need to have your own image repository (such as registering docker hub).
Third party image
Pros: Super easy.
Cons: The version update is not timely. Third-party mirrors may have security risks.
Give up ffmpeg
Pros: There is nothing difficult in the world, as long as you are willing to give up. I use ffmpeg to make preview of video, and final experience is just so so.
Cons: You will lose a feature.