From f44a976a32ae34085bacd0b530b4d2737b08ea5e Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 28 Nov 2021 19:29:39 +0000 Subject: [PATCH] Use shadowing script for docker Too many docker users are caught out by the default location for the app.ini file being environment dependent so that when they docker exec into the container the gitea commands do not work properly and require additional -c arguments to correctly pick up the configuration. This PR simply shadows the gitea binary using variants of the FHS compatible script to make the command gitea have the default locations by default. Fix #14468 Reference #17497 Reference #12082 Reference #8941 ... amongst others ... Replace #17501 Signed-off-by: Andrew Thornton --- Dockerfile | 3 +-- Dockerfile.rootless | 4 +-- contrib/fhs-compliant-script/gitea | 10 +++---- docker/root/etc/s6/gitea/run | 2 +- docker/root/usr/local/bin/gitea | 17 ++++++++++++ docker/rootless/usr/local/bin/gitea | 42 +++++++++++++++++++++++++++++ 6 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 docker/root/usr/local/bin/gitea create mode 100644 docker/rootless/usr/local/bin/gitea diff --git a/Dockerfile b/Dockerfile index 69a8cdbec1f5..5bf06064a498 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,6 +66,5 @@ CMD ["/bin/s6-svscan", "/etc/s6"] COPY docker/root / COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini -RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/environment-to-ini +RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini RUN chmod 755 /etc/s6/gitea/* /etc/s6/openssh/* /etc/s6/.s6-svscan/* -RUN ln -s /app/gitea/gitea /usr/local/bin/gitea diff --git a/Dockerfile.rootless b/Dockerfile.rootless index f6430e5f69d4..8bfaf9cb86fd 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -53,9 +53,9 @@ RUN mkdir -p /var/lib/gitea /etc/gitea RUN chown git:git /var/lib/gitea /etc/gitea COPY docker/rootless / -COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /usr/local/bin/gitea +COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini -RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /usr/local/bin/gitea /usr/local/bin/environment-to-ini +RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini #git:git USER 1000:1000 diff --git a/contrib/fhs-compliant-script/gitea b/contrib/fhs-compliant-script/gitea index 019f838f9221..ae1ae3cf14ab 100755 --- a/contrib/fhs-compliant-script/gitea +++ b/contrib/fhs-compliant-script/gitea @@ -1,8 +1,8 @@ #!/bin/bash -######################################################################## -# This script some defaults for gitea to run in a FHS compliant manner # -######################################################################## +############################################################################# +# This script sets some defaults for gitea to run in a FHS compliant manner # +############################################################################# # It assumes that you place this script as gitea in /usr/bin # @@ -36,7 +36,7 @@ if [ -z "$APP_INI_SET" ]; then CONF_ARG="-c \"$APP_INI\"" fi -# Provide FHS compliant defaults to -exec -a "$0" GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" "$GITEA" $CONF_ARG "$@" +# Provide FHS compliant defaults +GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" exec -a "$0" "$GITEA" $CONF_ARG "$@" diff --git a/docker/root/etc/s6/gitea/run b/docker/root/etc/s6/gitea/run index b6150c10d5fa..7b858350f296 100755 --- a/docker/root/etc/s6/gitea/run +++ b/docker/root/etc/s6/gitea/run @@ -2,5 +2,5 @@ [[ -f ./setup ]] && source ./setup pushd /app/gitea >/dev/null -exec su-exec $USER /app/gitea/gitea web +exec su-exec $USER /usr/local/bin/gitea web popd diff --git a/docker/root/usr/local/bin/gitea b/docker/root/usr/local/bin/gitea new file mode 100644 index 000000000000..8a8f17bc4ecd --- /dev/null +++ b/docker/root/usr/local/bin/gitea @@ -0,0 +1,17 @@ +#!/bin/bash + +############################################################### +# This script sets defaults for gitea to run in the container # +############################################################### + +# It assumes that you place this script as gitea in /usr/local/bin +# +# And place the original in /usr/lib/gitea with working files in /data/gitea +GITEA="/app/gitea/gitea" +WORK_DIR="/app/gitea" +CUSTOM_PATH="/data/gitea" + +# Provide docker defaults +GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" GITEA_CUSTOM="${GITEA_CUSTOM:-$CUSTOM_PATH}" exec -a "$0" "$GITEA" $CONF_ARG "$@" + + diff --git a/docker/rootless/usr/local/bin/gitea b/docker/rootless/usr/local/bin/gitea new file mode 100644 index 000000000000..5fdadfb3fe84 --- /dev/null +++ b/docker/rootless/usr/local/bin/gitea @@ -0,0 +1,42 @@ +#!/bin/bash + +############################################################### +# This script sets defaults for gitea to run in the container # +############################################################### + +# It assumes that you place this script as gitea in /usr/local/bin +# +# And place the original in /usr/lib/gitea with working files in /data/gitea +GITEA="/app/gitea/gitea" +WORK_DIR="/var/lib/gitea" +APP_INI="/etc/gitea/app.ini" + +APP_INI_SET="" +for i in "$@"; do + case "$i" in + "-c") + APP_INI_SET=1 + ;; + "-c="*) + APP_INI_SET=1 + ;; + "--config") + APP_INI_SET=1 + ;; + "--config="*) + APP_INI_SET=1 + ;; + *) + ;; + esac +done + +if [ -z "$APP_INI_SET" ]; then + CONF_ARG="-c \"$APP_INI\"" +fi + + +# Provide docker defaults +GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" exec -a "$0" "$GITEA" $CONF_ARG "$@" + +