From e63e0b3105124bd8ec3028a39dc71c8d8ca103e3 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Roemer Date: Fri, 2 Oct 2015 10:56:36 +0100 Subject: New approach to Gogs Docker Container MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VOLUME for ‘/data’ - Usage of S6 as PID 1 Process - Usage of ‘socat’ so linked container (like databases) are binded to localhost - OpenSSH, Socat Link and Gogs are supervised using S6 - Size of container reduced to ~75Mo --- docker/s6/.s6-svscan/finish | 2 ++ docker/s6/gogs/run | 28 ++++++++++++++++++++++++++++ docker/s6/openssh/run | 15 +++++++++++++++ 3 files changed, 45 insertions(+) create mode 100755 docker/s6/.s6-svscan/finish create mode 100755 docker/s6/gogs/run create mode 100755 docker/s6/openssh/run (limited to 'docker/s6') diff --git a/docker/s6/.s6-svscan/finish b/docker/s6/.s6-svscan/finish new file mode 100755 index 00000000..22665fa9 --- /dev/null +++ b/docker/s6/.s6-svscan/finish @@ -0,0 +1,2 @@ +#!/bin/sh +exec /bin/true diff --git a/docker/s6/gogs/run b/docker/s6/gogs/run new file mode 100755 index 00000000..a7b4cc55 --- /dev/null +++ b/docker/s6/gogs/run @@ -0,0 +1,28 @@ +#!/bin/sh +USER=git +USERNAME=$USER + +if ! test -d /data/gogs; then + mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git +fi + +if ! test -d ~git/.ssh; then + mkdir ~git/.ssh + chmod 700 ~git/.ssh +fi + +if ! test -f ~git/.ssh/environment; then + echo "GOGS_CUSTOM=/data/gogs" > ~git/.ssh/environment + chown git:git ~git/.ssh/environment + chown 600 ~git/.ssh/environment +fi + +ln -sf /data/gogs/log /app/gogs/log +ln -sf /data/gogs/data /app/gogs/data +ln -sf /data/gogs/conf /app/gogs/conf + +chown -R git:git /data /app/gogs ~git/ + +export USER +export USERNAME +exec gosu $USER /app/gogs/gogs web diff --git a/docker/s6/openssh/run b/docker/s6/openssh/run new file mode 100755 index 00000000..89128576 --- /dev/null +++ b/docker/s6/openssh/run @@ -0,0 +1,15 @@ +#!/bin/sh + +if ! test -d /data/ssh +then + mkdir -p /data/ssh + ssh-keygen -q -f /data/ssh/ssh_host_key -N '' -t rsa1 + ssh-keygen -q -f /data/ssh/ssh_host_rsa_key -N '' -t rsa + ssh-keygen -q -f /data/ssh/ssh_host_dsa_key -N '' -t dsa + ssh-keygen -q -f /data/ssh/ssh_host_ecdsa_key -N '' -t ecdsa + ssh-keygen -q -f /data/ssh/ssh_host_ed25519_key -N '' -t ed25519 + chown -R root:root /data/ssh/* + chmod 600 /data/ssh/* +fi + +exec gosu root /usr/sbin/sshd -D -f /etc/ssh/sshd_config -- cgit v1.2.3 From 3cad8d9492a7dfd85ced9a897f5933d70ed15814 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Roemer Date: Fri, 2 Oct 2015 11:29:11 +0100 Subject: Use app/docker folder for SSH Configureation --- Dockerfile | 4 +--- docker/s6/openssh/run | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'docker/s6') diff --git a/Dockerfile b/Dockerfile index 453324a1..a3b03c55 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,6 @@ RUN echo "@edge http://dl-4.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/ && apk -U --no-progress add ca-certificates git linux-pam s6@edge curl openssh socat \ && chmod +x /usr/sbin/gosu -# Configure SSH -COPY docker/sshd_config /etc/ssh/sshd_config - # Configure Go and build Gogs ENV GOPATH /tmp/go ENV PATH $PATH:$GOPATH/bin @@ -26,6 +23,7 @@ ENV GOGS_CUSTOM /data/gogs RUN adduser -D -g 'Gogs Git User' git -h /data/git/ -s /bin/sh && passwd -u git RUN echo "export GOGS_CUSTOM=/data/gogs" >> /etc/profile +# Configure Docker Container VOLUME ["/data"] EXPOSE 22 3000 CMD ["./docker/start.sh"] diff --git a/docker/s6/openssh/run b/docker/s6/openssh/run index 89128576..444863a5 100755 --- a/docker/s6/openssh/run +++ b/docker/s6/openssh/run @@ -12,4 +12,4 @@ then chmod 600 /data/ssh/* fi -exec gosu root /usr/sbin/sshd -D -f /etc/ssh/sshd_config +exec gosu root /usr/sbin/sshd -D -f /app/gogs/docker/sshd_config -- cgit v1.2.3