diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 1c2b33c..d4a21a0 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -1,21 +1,32 @@ -name: Container image build +name: Buildah Build on: push: branches: + - develop - master paths: - - "Dockerfile" + - "Containerfile" pull_request: branches: - master paths: - - "Dockerfile" + - "Containerfile" jobs: build: - runs-on: ubuntu-22.04 + name: Build image + runs-on: ubuntu-24.04 + steps: - - uses: actions/checkout@v2 - - name: Build the container image - run: docker build . -f ./Dockerfile -t mpv:$(date +%s) + - uses: actions/checkout@v4 + + # https://github.com/redhat-actions/buildah-build + - name: Buildah build + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: mpv + tags: latest ${{ github.ref_name }} + containerfiles: | + ./Containerfile diff --git a/.github/workflows/push-image.yml b/.github/workflows/push-image.yml index 1505440..d2a4085 100644 --- a/.github/workflows/push-image.yml +++ b/.github/workflows/push-image.yml @@ -1,4 +1,4 @@ -name: Publish container image to Docker Hub +name: Buildah Build and Push on: push: @@ -6,29 +6,31 @@ on: - '*' jobs: - push_to_registry: - name: Push Container image to Docker Hub - runs-on: ubuntu-22.04 + build_n_push: + name: Build and push + runs-on: ubuntu-24.04 + steps: - - name: Check out the repo - uses: actions/checkout@v2 - - - name: Log in to Docker Hub - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: cremuzzi/mpv + - uses: actions/checkout@v4 - - name: Build and push Docker image - uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc - with: - context: . - labels: ${{ steps.meta.outputs.labels }} - push: true - tags: ${{ steps.meta.outputs.tags }} + # https://github.com/redhat-actions/buildah-build + - name: Buildah build + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: mpv + tags: latest ${{ github.ref_name }} + containerfiles: | + ./Containerfile + + # https://github.com/redhat-actions/push-to-registry + - name: Push To docker.io + id: push-to-docker-io + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: docker.io/cremuzzi + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..03bf6fc --- /dev/null +++ b/Containerfile @@ -0,0 +1,29 @@ +FROM alpine:3.20 + +LABEL maintainer="Carlos Remuzzi " +LABEL org.label-schema.description="Containerization of mpv.io" +LABEL org.label-schema.name="mpv" +LABEL org.label-schema.schema-version="1.0" +LABEL org.label-schema.vcs-url="https://github.com/cremuzzi/docker-mpv" + +ARG YTDL_VERSION=2024.08.07 + +RUN apk add --no-cache \ + ffmpeg \ + mesa-dri-gallium \ + mpv \ + pulseaudio \ + python3 \ + ttf-dejavu \ + && wget https://github.com/ytdl-org/ytdl-nightly/releases/download/${YTDL_VERSION}/youtube-dl \ + -O /usr/local/bin/youtube-dl \ + && chmod 0755 /usr/local/bin/youtube-dl \ + && echo "UP add volume +2" > /etc/mpv/input.conf \ + && echo "DOWN add volume -2" >> /etc/mpv/input.conf \ + && adduser -u 1000 -D mpv + +USER mpv + +WORKDIR /home/mpv/ + +CMD ["/bin/ash"] diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index de6f8a0..0000000 --- a/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM alpine:3.16 - -LABEL maintainer="Carlos Remuzzi " -LABEL org.label-schema.description="Containerization of mpv.io" -LABEL org.label-schema.name="mpv" -LABEL org.label-schema.schema-version="1.0" -LABEL org.label-schema.vcs-url="https://github.com/cremuzzi/docker-mpv" - -RUN apk add --no-cache \ - ffmpeg \ - mesa-demos \ - mesa-dri-intel \ - mpv \ - pulseaudio \ - python3 \ - ttf-dejavu \ - && ln -s python3 /usr/bin/python \ - && wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl \ - && chmod 755 /usr/local/bin/youtube-dl \ - && adduser -u 1000 -D mpv \ - && mkdir -p /home/mpv/media \ - && mkdir -p /home/mpv/.config/pulse \ - && echo "default-server = unix:/run/user/1000/pulse/native" > /home/mpv/.config/pulse/client.conf \ - && echo "autospawn = no" >> /home/mpv/.config/pulse/client.conf \ - && echo "daemon-binary = /bin/true" >> /home/mpv/.config/pulse/client.conf \ - && echo "enable-shm = false" >> /home/mpv/.config/pulse/client.conf \ - && mkdir -p /home/mpv/.config/mpv \ - && echo "UP add volume +2" > /home/mpv/.config/mpv/input.conf \ - && echo "DOWN add volume -2" >> /home/mpv/.config/mpv/input.conf \ - && chown -R mpv:mpv /home/mpv - -USER mpv - -WORKDIR /home/mpv/media - -VOLUME ["/home/mpv/media"] - -CMD ["ash"] diff --git a/README.md b/README.md index ae5be33..62a1189 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,13 @@ Once you are there, you can just explore the folder and play the media file that Please notice in the example above that we are mounting a few volumes that allow your container to connect as a client to your host's pulseaudio and Xorg server. -## youtube-dl +## yt-dl -The image comes with **youtube-dl** as well. So you can play YT content directly like this: +This image comes with **yt-dl** installed. +You can play yt-dl supported content via +running this image with command `mpv https://media/url/`. + +Eg.: ```sh docker run --rm -i -t \ @@ -36,11 +40,10 @@ docker run --rm -i -t \ -v /etc/machine-id:/etc/machine-id:ro \ -v /run/user/1000/pulse:/run/user/1000/pulse \ -v $HOME/.Xauthority:/home/mpv/.Xauthority \ - cremuzzi/mpv mpv http://youtube.com/watch?v=yt-video-id + cremuzzi/mpv mpv https://media/url/ ``` -The difference here is that we are not mounting any media folder from the host. -In this example we are running a container with the custom command "mpv yt-video-url", then mpv will take care of everything for you. +As long as your media url is retrievable by yt-dl then mpv should take care of reproducing it. ## Further reading