diff options
-rw-r--r-- | Dockerfile | 14 | ||||
-rwxr-xr-x | root/entrypoint | 20 | ||||
-rwxr-xr-x | root/usr/bin/fix-permissions | 7 | ||||
-rwxr-xr-x | root/usr/bin/rungogs | 3 |
4 files changed, 44 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..78ffc0f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM gogs/gogs:latest + +MAINTAINER Suren A. Chilingaryan <csa@suren.me> + +COPY ./root / + +RUN mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git /data/ssh && \ + /usr/bin/fix-permissions /data && \ + ln -sfn /data/gogs/log /app/gogs/log && \ + ln -sfn /data/gogs/data /app/gogs/data && \ + /usr/bin/fix-permissions /etc/passwd + +ENTRYPOINT ["/entrypoint"] +CMD ["/usr/bin/rungogs"] diff --git a/root/entrypoint b/root/entrypoint new file mode 100755 index 0000000..9845a77 --- /dev/null +++ b/root/entrypoint @@ -0,0 +1,20 @@ +#! /bin/sh + +export USER=git +export HOME=/data +export USER_ID=$(id -u) +export GROUP_ID=$(id -g) + +grep -v ^git /etc/passwd > "$HOME/passwd" +echo "git:x:${USER_ID}:${GROUP_ID}:gogs.io user:${HOME}:/bin/bash" >> "$HOME/passwd" +cat "$HOME/passwd" > /etc/passwd + +#No nss_wrapper in Alpine Linux yet +#export LD_PRELOAD=libnss_wrapper.so +#export NSS_WRAPPER_PASSWD=${HOME}/passwd +#export NSS_WRAPPER_GROUP=/etc/group +#export PORT=3000 + +mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git /data/ssh + +exec "$@" diff --git a/root/usr/bin/fix-permissions b/root/usr/bin/fix-permissions new file mode 100755 index 0000000..b90d208 --- /dev/null +++ b/root/usr/bin/fix-permissions @@ -0,0 +1,7 @@ +#!/bin/sh +# Fix permissions on the given directory to allow group read/write of +# regular files and execute of directories. +chown -R git "$1" +chgrp -R 0 "$1" +chmod -R g+rw "$1" +find "$1" -type d -exec chmod g+x {} + diff --git a/root/usr/bin/rungogs b/root/usr/bin/rungogs new file mode 100755 index 0000000..0167152 --- /dev/null +++ b/root/usr/bin/rungogs @@ -0,0 +1,3 @@ +#! /bin/sh + +/app/gogs/gogs web |