diff --git a/Dockerfile b/Dockerfile index 5be2e00dd..fcc489ff9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -171,7 +171,9 @@ RUN set -eux \ && cp /etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml \ && echo "Cleaning up image layer" \ && rm --force --verbose *.deb \ - && rm --recursive --force --verbose /var/lib/apt/lists/* + && rm --recursive --force --verbose /var/lib/apt/lists/* \ + && echo "Configuring interactive shells to source the s6 container environment" \ + && echo '. /etc/profile.d/contenv.sh' >> /etc/bash.bashrc WORKDIR /usr/src/paperless/src/ diff --git a/docker/rootfs/etc/profile.d/contenv.sh b/docker/rootfs/etc/profile.d/contenv.sh new file mode 100755 index 000000000..be5f3ba1c --- /dev/null +++ b/docker/rootfs/etc/profile.d/contenv.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# Source s6 container environment for interactive shells. +# Ensures variables resolved from *_FILE secret injection are visible +# when using 'docker exec bash'. Does not affect s6 services (those +# use with-contenv directly). Has no effect in non-container contexts +# because the directory will not exist. +# Note: sh/dash shells opened via 'docker exec sh' are not covered; +# only bash-based sessions benefit from this file. +_pngx_contenv="/run/s6/container_environment" +if [ -d "${_pngx_contenv}" ]; then + for _pngx_f in "${_pngx_contenv}"/*; do + [ -f "${_pngx_f}" ] || continue + _pngx_name=$(basename "${_pngx_f}") + _pngx_val=$(cat "${_pngx_f}") + export "${_pngx_name}=${_pngx_val}" + done +fi +unset _pngx_contenv _pngx_f _pngx_name _pngx_val