Community maintained Docker config for the knot server

Add UID and GID arguments to Dockerfile #11

merged opened by ionchy.ca targeting main from ionchy.ca/knot-docker: main

UID and GID args can now be set during build, so following the example command in the README should fix #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.

Labels

None yet.

Participants 3
AT URI
at://did:plc:ypsrm6ue6o5xk5kvbdhwtppm/sh.tangled.repo.pull/3m3ld35ii6p22
+27 -4
Diff #0
+6 -1
Dockerfile
··· 20 20 label org.opencontainers.image.vendor='tangled.sh' 21 21 label org.opencontainers.image.licenses='MIT' 22 22 23 + arg UID=1000 24 + arg GID=1000 25 + 23 26 copy rootfs . 24 27 run chmod 755 /etc 25 28 run chmod -R 755 /etc/s6-overlay 26 29 run apk add shadow s6-overlay execline openssl openssh git curl bash 27 - run useradd -d /home/git git && openssl rand -hex 16 | passwd --stdin git 30 + run groupadd -g $GID -f git 31 + run useradd -u $UID -g $GID -d /home/git git 32 + run openssl rand -hex 16 | passwd --stdin git 28 33 run mkdir -p /home/git/repositories && chown -R git:git /home/git 29 34 copy --from=builder /usr/bin/knot /usr/bin 30 35 run mkdir /app && chown -R git:git /app
+5 -1
docker-compose.yml
··· 1 1 services: 2 2 knot: 3 - build: . 3 + build: 4 + context: . 5 + args: 6 + UID: 1000 7 + GID: 1000 4 8 environment: 5 9 KNOT_SERVER_HOSTNAME: ${KNOT_SERVER_HOSTNAME} 6 10 KNOT_SERVER_OWNER: ${KNOT_SERVER_OWNER}
+16 -2
readme.md
··· 29 29 The command above for example will build the latest commit on the `master` 30 30 branch. 31 31 32 + By default it will also create a `git` user with user and group ID 1000:1000, 33 + but you can change it with the `UID` and `GID` build arguments. 34 + 35 + ```sh 36 + docker build -t knot:latest --build-arg UID=$(id -u) GID=$(id -g) 37 + ``` 38 + 39 + The command above for example will create a user with the host user's UID and GID. 40 + This is useful if you are bind mounting the repositories and app folder on the host, 41 + as in the provided `docker-compose.yml` file. 42 + 32 43 <hr style="margin-bottom: 20px; margin-top: 10px" /> 33 44 34 - When using compose, it can be specified as a build argument which will be 45 + When using compose, these can be specified as build arguments which will be 35 46 passed to the builder. 36 47 37 48 ```yaml 38 49 build: 39 50 context: . 40 - args: { TAG: master } 51 + args: 52 + TAG: master 53 + UID: 1000 54 + GID: 1000 41 55 ``` 42 56 43 57 This will for example tell docker to build it using the `master` branch like

History

1 round 3 comments
sign up or login to add to the discussion
ionchy.ca submitted #0
1 commit
expand
Add UID and GID arguments to Dockerfile
expand 3 comments

The UID and GID arguments should probably be env variables so they can be changed in managed environments like Coolify or Railway but if it's too hard to resubmit the PR with JJ, I can just merge and patch this after.

actually i think that's probably overkill, arg should be fine

@knotbin.com it wouldn't be overkill for those of us running the prebuilt image

pull request successfully merged