From b6c66a4135a2c46b57dad53162651d34b99a1cfd Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Sat, 6 Sep 2025 02:45:24 +0200 Subject: [PATCH] Add `UID` and `GID` arguments to Dockerfile Change-Id: nslkuzvnqksrwnsrnrkzopztoxruzuop `UID` and `GID` args can now be set during build, so following the example command in the README should fix [#2](https://tangled.sh/@tangled.sh/knot-docker/issues/2) by providing a `UID` and `GID` that exist on the host so that the directories owned by git in the container can be bind mounted on the host. --- Dockerfile | 7 ++++++- readme.md | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9cc349e..f053dc1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,11 +20,16 @@ label org.opencontainers.image.url='https://tangled.sh' label org.opencontainers.image.vendor='tangled.sh' label org.opencontainers.image.licenses='MIT' +arg UID=1000 +arg GID=1000 + copy rootfs . run chmod 755 /etc run chmod -R 755 /etc/s6-overlay run apk add shadow s6-overlay execline openssl openssh git curl bash -run useradd -d /home/git git && openssl rand -hex 16 | passwd --stdin git +run groupadd -g $GID -f git +run useradd -u $UID -g $GID -d /home/git git +run openssl rand -hex 16 | passwd --stdin git run mkdir -p /home/git/repositories && chown -R git:git /home/git copy --from=builder /usr/bin/knot /usr/bin run mkdir /app && chown -R git:git /app diff --git a/readme.md b/readme.md index d77f4aa..8bea590 100644 --- a/readme.md +++ b/readme.md @@ -29,6 +29,17 @@ docker build -t knot:latest --build-arg TAG=master . The command above for example will build the latest commit on the `master` branch. +By default it will also create a `git` user with user and group ID 1000:1000, +but you can change it with the `UID` and `GID` build arguments. + +```sh +docker build -t knot:latest --build-arg UID=$(id -u) GID=$(id -g) +``` + +The command above for example will create a user with the host user's UID and GID. +This is useful if you are bind mounting the repositories and app folder on the host, +as in the provided `docker-compose.yml` file. +
When using compose, it can be specified as a build argument which will be -- 2.51.0