From 789c42af7be8ba15101bc8296a8a709732a969d8 Mon Sep 17 00:00:00 2001 From: Ludy Date: Wed, 12 Nov 2025 01:21:44 +0100 Subject: [PATCH] ci(docker,workflow): install bash in images, keep /bin/sh POSIX, and simplify PR test-build deps (#4879) # Description of Changes This pull request updates the Docker setup for all image variants (`Dockerfile`, `Dockerfile.fat`, and `Dockerfile.ultra-lite`) to improve shell compatibility and ensure consistent behavior across environments. The most important changes are grouped below: Shell compatibility improvements: * Added installation of `bash` and created a symlink from `/bin/bash` to `/bin/sh` to ensure scripts expecting `bash` work correctly in all Docker images. (`Dockerfile`: [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L42-R44) `Dockerfile.fat`: [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L56-R58) `Dockerfile.ultra-lite`: [[3]](diffhunk://#diff-ebe2e5849a198a8b5be70f42dcd1ddc518c7584d525f6492d221db9f7a45a6f5L27-R29) Default shell consistency: * Added a symlink from `/bin/busybox` to `/bin/sh` after setting user permissions to ensure the default shell remains available and consistent for system utilities. (`Dockerfile`: [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L101-R104) `Dockerfile.fat`: [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L114-R117) `Dockerfile.ultra-lite`: [[3]](diffhunk://#diff-ebe2e5849a198a8b5be70f42dcd1ddc518c7584d525f6492d221db9f7a45a6f5L47-R50) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --- .github/workflows/build.yml | 2 +- Dockerfile | 7 +++++-- Dockerfile.fat | 7 +++++-- Dockerfile.ultra-lite | 7 +++++-- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7da172bbf..1a4ba013a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -266,7 +266,7 @@ jobs: test-build-docker-images: if: github.event_name == 'pull_request' && needs.files-changed.outputs.project == 'true' - needs: [files-changed, build, check-generateOpenApiDocs, check-licence] + needs: [files-changed, build] runs-on: ubuntu-latest strategy: fail-fast: false diff --git a/Dockerfile b/Dockerfile index bb8412cc9..bcb62ed58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,9 @@ ENV DISABLE_ADDITIONAL_FEATURES=true \ TMP=/tmp/stirling-pdf # JDK for app -RUN printf '%s\n' \ +RUN apk add --no-cache bash \ + && ln -sf /bin/bash /bin/sh \ + && printf '%s\n' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/main' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/community' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' \ @@ -98,7 +100,8 @@ RUN printf '%s\n' \ # User permissions addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline /tmp/stirling-pdf && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar + chown stirlingpdfuser:stirlingpdfgroup /app.jar && \ + ln -sf /bin/busybox /bin/sh EXPOSE 8080/tcp diff --git a/Dockerfile.fat b/Dockerfile.fat index 363c4b555..5609ffd20 100644 --- a/Dockerfile.fat +++ b/Dockerfile.fat @@ -53,7 +53,9 @@ ENV DISABLE_ADDITIONAL_FEATURES=true \ TMP=/tmp/stirling-pdf # JDK for app -RUN printf '%s\n' \ +RUN apk add --no-cache bash \ + && ln -sf /bin/bash /bin/sh \ + && printf '%s\n' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/main' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/community' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' \ @@ -111,7 +113,8 @@ RUN printf '%s\n' \ # User permissions addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline /tmp/stirling-pdf && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar + chown stirlingpdfuser:stirlingpdfgroup /app.jar && \ + ln -sf /bin/busybox /bin/sh EXPOSE 8080/tcp # Set user and run command diff --git a/Dockerfile.ultra-lite b/Dockerfile.ultra-lite index 3a7c67072..a49362d60 100644 --- a/Dockerfile.ultra-lite +++ b/Dockerfile.ultra-lite @@ -24,7 +24,9 @@ COPY scripts/installFonts.sh /scripts/installFonts.sh COPY app/core/build/libs/*.jar app.jar # Set up necessary directories and permissions -RUN printf '%s\n' \ +RUN apk add --no-cache bash \ + && ln -sf /bin/bash /bin/sh \ + && printf '%s\n' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/main' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/community' \ 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' \ @@ -44,7 +46,8 @@ RUN printf '%s\n' \ chmod +x /scripts/*.sh && \ addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /pipeline /configs /customFiles /tmp/stirling-pdf && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar + chown stirlingpdfuser:stirlingpdfgroup /app.jar && \ + ln -sf /bin/busybox /bin/sh # Set environment variables ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI