-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build Docker multiarch images and fix Dockerfile #278
Conversation
This looks awesome! I'll merge this if the pipeline runs. |
After some more testing I realized ffmpeg-static only targets x86, so the build doesn't work for ARM, oops. Would it be a good idea to package vanilla ffmpeg for architectures other than x86? |
I think that should do for now, but ideally we should edit the ffmpeg-static build scripts to also target ARM and so on. |
I agree, but for now, I have modified the Dockerfile to use the vanilla ffmpeg Debian package when the architecture is not amd64. I have both amd64 and arm64 working and tested with this new Dockerfile, so I'm pretty sure everything works now. |
Gotcha, I'm happy to merge this. Ill give the docker image a spin on my raspi. |
Adding consideration this
Repeated for every TARGETARCH.
Additional material |
I have stumbled upon another issue, which is that building the main crate does not work under QEMU for ARMv7, due to this weird bug. Building the Dockerfile natively works for ARMv7, but under QEMU (which is used in the workflow) there are some large file support issues. I have removed ARMv7 from the workflow for now, which only leaves AMD64 and ARM64. |
The problem with using these pre compiled binaries is that they lack certain features like VAAPI by the looks of it. NVENC options are also lacking. |
Ah i see, the precompiled from Another way i can suggest is using ffmpeg from jellyfin by using jellyfin repo. My personal vaapi image build, work on AMD and intel. Can't really tell for nvenc, and arm devices, if someone can help to test gladly welcome.
ffmpeg capabilities
jellyfin-ffmpeg
|
IIRC jellyfin-ffmpeg is not up to date with ffmpeg's master branch and includes some jellyfin specific modifications that we do not need. I think its best we stick with ffmpeg from our own repo, until we can figure out a more stable solution. |
It would be cool to update this PR to also push to GHCR, dockerhub rate limits pull requests and is going downhill in terms of being friendly towards OSS projects. |
I personally prefer GHCR too, but I think it'd be more practical to maintain a single registry. Keeping quick dev builds in sync between two registries for example would not be very practical I think. Don't know what @vgarleanu thinks of this. |
I'm not entirely sure what the benefits of using GHCR are, but I think it might be better to stick with dockerhub for now. |
It's free, easily integrated with your project here and no image pull limits. |
sounds good to me, will I have to reconfigure anything within docker on my dev machine? |
Nope the only thing you'll need to do after the workflow is updated, is prepare the repository here to display the package and make it public. |
@ldobbelsteen if you could add support for deploying to GHCR that would be lovely! |
Done deal. The GITHUB_TOKEN in the workflow is actually pre-supplied by Actions so there's no need to setup any tokens. |
@ldobbelsteen when should we see this outputting containers? 0B pull when using new ghcr repo from README |
The workflow only runs when a tag happens, or when it is manually triggered, which I don't have the rights to. |
I'll probably end up making a new rc image sometime next week, and a dev release Monday morning. |
This relates to issue #213 that I opened. I have modified the Docker image workflow to support building images for multiple architectures (amd64, arm64 and armv7). Unfortunately I was not able to add RISC as an architecture, as it is not supported by Node.
I also fixed the Dockerfile such that it won't be necessary to manually add the ffmpeg binaries to the project root in order to build the image. This way, the workflow will build.