Skip to content

Commit 7d0629a

Browse files
authored
Use shadowing script for docker (#17846)
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 <art27@cantab.net>
1 parent 042cac5 commit 7d0629a

File tree

6 files changed

+68
-10
lines changed

6 files changed

+68
-10
lines changed

Dockerfile

+1-2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,5 @@ CMD ["/bin/s6-svscan", "/etc/s6"]
6666
COPY docker/root /
6767
COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
6868
COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
69-
RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/environment-to-ini
69+
RUN chmod 755 /usr/bin/entrypoint /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
7070
RUN chmod 755 /etc/s6/gitea/* /etc/s6/openssh/* /etc/s6/.s6-svscan/*
71-
RUN ln -s /app/gitea/gitea /usr/local/bin/gitea

Dockerfile.rootless

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ RUN mkdir -p /var/lib/gitea /etc/gitea
5353
RUN chown git:git /var/lib/gitea /etc/gitea
5454

5555
COPY docker/rootless /
56-
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /usr/local/bin/gitea
56+
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
5757
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
58-
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
58+
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
5959

6060
#git:git
6161
USER 1000:1000

contrib/fhs-compliant-script/gitea

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22

3-
########################################################################
4-
# This script some defaults for gitea to run in a FHS compliant manner #
5-
########################################################################
3+
#############################################################################
4+
# This script sets some defaults for gitea to run in a FHS compliant manner #
5+
#############################################################################
66

77
# It assumes that you place this script as gitea in /usr/bin
88
#
@@ -36,7 +36,7 @@ if [ -z "$APP_INI_SET" ]; then
3636
CONF_ARG="-c \"$APP_INI\""
3737
fi
3838

39-
# Provide FHS compliant defaults to
40-
exec -a "$0" GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" "$GITEA" $CONF_ARG "$@"
39+
# Provide FHS compliant defaults
40+
GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" exec -a "$0" "$GITEA" $CONF_ARG "$@"
4141

4242

docker/root/etc/s6/gitea/run

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
[[ -f ./setup ]] && source ./setup
33

44
pushd /app/gitea >/dev/null
5-
exec su-exec $USER /app/gitea/gitea web
5+
exec su-exec $USER /usr/local/bin/gitea web
66
popd

docker/root/usr/local/bin/gitea

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
3+
###############################################################
4+
# This script sets defaults for gitea to run in the container #
5+
###############################################################
6+
7+
# It assumes that you place this script as gitea in /usr/local/bin
8+
#
9+
# And place the original in /usr/lib/gitea with working files in /data/gitea
10+
GITEA="/app/gitea/gitea"
11+
WORK_DIR="/app/gitea"
12+
CUSTOM_PATH="/data/gitea"
13+
14+
# Provide docker defaults
15+
GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" GITEA_CUSTOM="${GITEA_CUSTOM:-$CUSTOM_PATH}" exec -a "$0" "$GITEA" $CONF_ARG "$@"
16+
17+

docker/rootless/usr/local/bin/gitea

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/bin/bash
2+
3+
###############################################################
4+
# This script sets defaults for gitea to run in the container #
5+
###############################################################
6+
7+
# It assumes that you place this script as gitea in /usr/local/bin
8+
#
9+
# And place the original in /usr/lib/gitea with working files in /data/gitea
10+
GITEA="/app/gitea/gitea"
11+
WORK_DIR="/var/lib/gitea"
12+
APP_INI="/etc/gitea/app.ini"
13+
14+
APP_INI_SET=""
15+
for i in "$@"; do
16+
case "$i" in
17+
"-c")
18+
APP_INI_SET=1
19+
;;
20+
"-c="*)
21+
APP_INI_SET=1
22+
;;
23+
"--config")
24+
APP_INI_SET=1
25+
;;
26+
"--config="*)
27+
APP_INI_SET=1
28+
;;
29+
*)
30+
;;
31+
esac
32+
done
33+
34+
if [ -z "$APP_INI_SET" ]; then
35+
CONF_ARG="-c \"$APP_INI\""
36+
fi
37+
38+
39+
# Provide docker defaults
40+
GITEA_WORK_DIR="${GITEA_WORK_DIR:-$WORK_DIR}" exec -a "$0" "$GITEA" $CONF_ARG "$@"
41+
42+

0 commit comments

Comments
 (0)