From c6dab16fdebc676c7ca846f84c059aaf2c2297c3 Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 11:52:20 +0200 Subject: [PATCH 01/10] Add user accounts --- Dockerfile | 15 +++++++++++++-- docker-entrypoint.sh | 10 ++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100755 docker-entrypoint.sh diff --git a/Dockerfile b/Dockerfile index c6655a8..227d61e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,11 +2,22 @@ FROM alpine:3 ARG TARGETPLATFORM +VOLUME /backups + RUN apk add --no-cache libc6-compat ADD ${TARGETPLATFORM}/git-backup / RUN chmod +x /git-backup -VOLUME /backups +## Add the user for command execution +RUN apk add --no-cache shadow +RUN groupmod -g 1000 users && \ + useradd -u 1000 -U -d /backups -s /bin/false git-backup && \ + usermod -G users git-backup && \ + chown 1000:1000 /backups + + +ADD ./docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh -ENTRYPOINT ["/git-backup", "-backup.path", "/backups", "-config.file", "/backups/git-backup.yml"] +ENTRYPOINT ["/docker-entrypoint.sh", "-backup.path", "/backups", "-config.file", "/backups/git-backup.yml"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..e126028 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -eu + +PUID=${PUID:-1000} +PGID=${PGID:-1000} + +groupmod -o -g "$PGID" git-backup +usermod -o -u "$PUID" git-backup + +/git-backup "$@" From 2d129607c7f763a19af17d6abe23a6b9a10bc5b7 Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 17:25:13 +0200 Subject: [PATCH 02/10] Env var test one --- Dockerfile | 8 +++----- docker-entrypoint.sh | 7 ++++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 227d61e..f24a6ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,11 +11,9 @@ RUN chmod +x /git-backup ## Add the user for command execution RUN apk add --no-cache shadow -RUN groupmod -g 1000 users && \ - useradd -u 1000 -U -d /backups -s /bin/false git-backup && \ - usermod -G users git-backup && \ - chown 1000:1000 /backups - +RUN groupmod -g 0 users && \ + useradd -o -u 0 -U -d /backups -s /bin/false git-backup && \ + usermod -G users git-backup ADD ./docker-entrypoint.sh /docker-entrypoint.sh RUN chmod +x /docker-entrypoint.sh diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index e126028..6418d36 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,10 +1,11 @@ #!/bin/sh set -eu -PUID=${PUID:-1000} -PGID=${PGID:-1000} +PUID=${PUID:-$(id -u)} +PGID=${PGID:-$(id -g)} groupmod -o -g "$PGID" git-backup usermod -o -u "$PUID" git-backup +chown git-backup:git-backup /backup -/git-backup "$@" +su git-backup /git-backup "$@" From ff44588bf681c3e397ad4a7d2e0776168b754e3e Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 17:42:01 +0200 Subject: [PATCH 03/10] Perhaps a better option --- Dockerfile | 3 --- docker-entrypoint.sh | 23 +++++++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index f24a6ae..f2cceed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,9 +11,6 @@ RUN chmod +x /git-backup ## Add the user for command execution RUN apk add --no-cache shadow -RUN groupmod -g 0 users && \ - useradd -o -u 0 -U -d /backups -s /bin/false git-backup && \ - usermod -G users git-backup ADD ./docker-entrypoint.sh /docker-entrypoint.sh RUN chmod +x /docker-entrypoint.sh diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 6418d36..6790f48 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,11 +1,22 @@ #!/bin/sh set -eu +if [[ "${id -u}" == "0" ]] +then + # We are running with an environment variable user change + PUID=${PUID:-$(id -u)} + PGID=${PGID:-$(id -g)} -PUID=${PUID:-$(id -u)} -PGID=${PGID:-$(id -g)} + # Make sure the user exists + useradd -o -u "$PUID" -U -d /backups -s /bin/false git-backup + groupmod -o -g "$PGID" git-backup -groupmod -o -g "$PGID" git-backup -usermod -o -u "$PUID" git-backup -chown git-backup:git-backup /backup + # Own the backups folder + chown git-backup:git-backup /backup + + # Let's go! + su -s /bin/sh git-backup -c "/git-backup ${@}" whoami +else + # We are running through normal docker user changes, so nothing special to do + git-backup /git-backup "$@" +fi -su git-backup /git-backup "$@" From ecb8791bd5545689658c06392191929665bdf21e Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 17:49:25 +0200 Subject: [PATCH 04/10] Perform correct check --- docker-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 6790f48..9396075 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/sh set -eu -if [[ "${id -u}" == "0" ]] +if [[ -v $PUID || -v $PGID ]] then # We are running with an environment variable user change PUID=${PUID:-$(id -u)} @@ -14,7 +14,7 @@ then chown git-backup:git-backup /backup # Let's go! - su -s /bin/sh git-backup -c "/git-backup ${@}" whoami + su -s /bin/sh git-backup -c "/git-backup $@" whoami else # We are running through normal docker user changes, so nothing special to do git-backup /git-backup "$@" From cd1637ac388678c08c9eb09b47325b9c265361ce Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 17:53:10 +0200 Subject: [PATCH 05/10] Do not fail if var not set --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 9396075..a156570 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/sh set -eu -if [[ -v $PUID || -v $PGID ]] +if [[ -v "${PUID-}" || -v "${PGID-}" ]] then # We are running with an environment variable user change PUID=${PUID:-$(id -u)} From 49efb8800a7c8f3d30cadb03856ac62417c1e60d Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 18:02:19 +0200 Subject: [PATCH 06/10] Flip statement to use z instead of v --- docker-entrypoint.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index a156570..5671383 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,7 +1,10 @@ #!/bin/sh set -eu -if [[ -v "${PUID-}" || -v "${PGID-}" ]] +if [[ -z "${PUID-}" && -z "${PGID-}" ]] then + # We are running through normal docker user changes, so nothing special to do + git-backup /git-backup "$@" +else # We are running with an environment variable user change PUID=${PUID:-$(id -u)} PGID=${PGID:-$(id -g)} @@ -14,9 +17,6 @@ then chown git-backup:git-backup /backup # Let's go! - su -s /bin/sh git-backup -c "/git-backup $@" whoami -else - # We are running through normal docker user changes, so nothing special to do - git-backup /git-backup "$@" + su -s /bin/sh /git-backup -c "/git-backup $@" whoami fi From 3003553449fa30814672072ca4109d9acbf92f0b Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sat, 23 Apr 2022 18:05:39 +0200 Subject: [PATCH 07/10] Fixes --- docker-entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 5671383..8f20511 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -3,7 +3,7 @@ set -eu if [[ -z "${PUID-}" && -z "${PGID-}" ]] then # We are running through normal docker user changes, so nothing special to do - git-backup /git-backup "$@" + /git-backup "$@" else # We are running with an environment variable user change PUID=${PUID:-$(id -u)} @@ -14,9 +14,9 @@ else groupmod -o -g "$PGID" git-backup # Own the backups folder - chown git-backup:git-backup /backup + chown git-backup:git-backup /backups # Let's go! - su -s /bin/sh /git-backup -c "/git-backup $@" whoami + su -s /bin/sh git-backup -c "/git-backup $@" whoami fi From 2ed15b75977cc258b90b2f906883ddd9570866ef Mon Sep 17 00:00:00 2001 From: Thomas Biesaart Date: Sun, 24 Apr 2022 07:40:01 +0200 Subject: [PATCH 08/10] Use here document marker to prevent issues with quotes --- docker-entrypoint.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8f20511..537dca3 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -17,6 +17,8 @@ else chown git-backup:git-backup /backups # Let's go! - su -s /bin/sh git-backup -c "/git-backup $@" whoami + su -s /bin/sh git-backup < Date: Sun, 24 Apr 2022 07:48:22 +0200 Subject: [PATCH 09/10] Use pipe --- docker-entrypoint.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 537dca3..e71a65f 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -17,8 +17,6 @@ else chown git-backup:git-backup /backups # Let's go! - su -s /bin/sh git-backup < Date: Sun, 24 Apr 2022 07:56:51 +0200 Subject: [PATCH 10/10] Update readme --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ce4eab7..cc650c3 100644 --- a/README.md +++ b/README.md @@ -91,5 +91,16 @@ First, create your [git-backup.yml file](#configuration-file) at `/path/to/your/ Then update your backups using the mounted volume. ```bash -docker run --volume /path/to/backups:/backups ghcr.io/chappio/git-backup:latest +docker run -v /path/to/backups:/backups ghcr.io/chappio/git-backup:1 ``` + +### Parameters + +You can specify several parameters when starting this container. + +| **Parameter** | **Description** | +|--------------------------------|----------------------------------------------------------------------------------------| +| `-v /path/to/backups:/backups` | Mount the folder where you want to store your backups and read you configuration file. | +| `-e TZ=Europe/Amsterdam` | Set the timezone used for logging. | +| `-e PUID=0` | Set the user id of the unix user who will own the backup files in /backup. | +| `-e PGID=0` | Set the group id of the unix user's group who will own the backup files. |