From 54dd404e0182b8ebbb68664550183f16d407e261 Mon Sep 17 00:00:00 2001 From: Simon <9295182+grimsi@users.noreply.github.com> Date: Sat, 26 Jul 2025 15:51:13 +0200 Subject: [PATCH] Add image with Ubuntu base (#661) --- .github/actions/docker-build-push/action.yml | 21 ++++++++++- docker/Dockerfile.ubuntu | 39 ++++++++++++++++++++ docker/entrypoint.ubuntu.sh | 12 ++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile.ubuntu create mode 100644 docker/entrypoint.ubuntu.sh diff --git a/.github/actions/docker-build-push/action.yml b/.github/actions/docker-build-push/action.yml index 7c90618..2170b2c 100644 --- a/.github/actions/docker-build-push/action.yml +++ b/.github/actions/docker-build-push/action.yml @@ -19,7 +19,15 @@ runs: username: ${{ inputs.ghcr_username }} password: ${{ inputs.ghcr_token }} - - name: Build and push Docker image + - name: Prepare Ubuntu tags + id: ubuntu_tags + shell: bash + run: | + TAGS="${{ inputs.tags }}" + UBUNTU_TAGS=$(echo "$TAGS" | awk -F, '{for(i=1;i<=NF;i++){split($i,a,":"); printf "%s:%s-ubuntu", a[1], a[2]; if(i> $GITHUB_OUTPUT + + - name: Build and push Docker image (Alpine) uses: docker/build-push-action@v5 with: context: ${{ inputs.context }} @@ -30,6 +38,17 @@ runs: cache-from: type=gha cache-to: type=gha + - name: Build and push Docker image (Ubuntu) + uses: docker/build-push-action@v5 + with: + context: ${{ inputs.context }} + file: docker/Dockerfile.ubuntu + platforms: ${{ inputs.platforms }} + push: true + tags: ${{ steps.ubuntu_tags.outputs.ubuntu_tags }} + cache-from: type=gha + cache-to: type=gha + inputs: dockerhub_username: required: true diff --git a/docker/Dockerfile.ubuntu b/docker/Dockerfile.ubuntu new file mode 100644 index 0000000..12d71b0 --- /dev/null +++ b/docker/Dockerfile.ubuntu @@ -0,0 +1,39 @@ +# syntax=docker/dockerfile:1.4 +FROM eclipse-temurin:21-jre + +MAINTAINER grimsi + +# Install necessary packages +RUN apt-get update && \ + apt-get install -y tini gosu && \ + rm -rf /var/lib/apt/lists/* + +ENV USER=gameyfin + +RUN groupadd gameyfin && \ + useradd -M -g gameyfin gameyfin + +WORKDIR /opt/gameyfin + +# Create necessary directories with appropriate permissions +RUN mkdir -p plugins db data logs && \ + chown -R gameyfin:gameyfin . + +# Copy entrypoint script and set permissions +COPY --chown=gameyfin:gameyfin ./docker/entrypoint.ubuntu.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +# Copy application jar (not ending with -plain.jar) +COPY --chown=gameyfin:gameyfin ./app/build/libs/ /tmp/app-libs/ +RUN find /tmp/app-libs -type f -name "*.jar" ! -name "*-plain.jar" -exec cp {} gameyfin.jar \; && \ + rm -rf /tmp/app-libs + +# Copy all plugin jars +COPY --chown=gameyfin:gameyfin ./plugins/ /tmp/plugins/ +RUN find /tmp/plugins -type f -path "*/build/libs/*.jar" -exec cp {} plugins/ \; && \ + rm -rf /tmp/plugins + +EXPOSE 8080 + +ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"] + diff --git a/docker/entrypoint.ubuntu.sh b/docker/entrypoint.ubuntu.sh new file mode 100644 index 0000000..6ace8d9 --- /dev/null +++ b/docker/entrypoint.ubuntu.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e + +if [ -n "$PUID" ] && [ -n "$PGID" ]; then + groupmod -o -g "$PGID" gameyfin + usermod -o -u "$PUID" gameyfin + chown -R gameyfin:gameyfin /opt/gameyfin + exec gosu gameyfin:gameyfin java -jar gameyfin.jar +else + exec gosu gameyfin:gameyfin java -jar gameyfin.jar +fi +