diff options
author | Jean-Philippe Roemer <roemer.jp@gmail.com> | 2015-10-02 10:56:36 +0100 |
---|---|---|
committer | Jean-Philippe Roemer <roemer.jp@gmail.com> | 2015-10-02 10:56:36 +0100 |
commit | e63e0b3105124bd8ec3028a39dc71c8d8ca103e3 (patch) | |
tree | 77052948f4410ae26a15720e3b847cabbfc0fd20 /docker/start.sh | |
parent | e0a099ec112e2746ec1f6dcd3276d19e14e50b06 (diff) | |
download | gitea-e63e0b3105124bd8ec3028a39dc71c8d8ca103e3.tar.gz gitea-e63e0b3105124bd8ec3028a39dc71c8d8ca103e3.zip |
New approach to Gogs Docker Container
- 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
Diffstat (limited to 'docker/start.sh')
-rwxr-xr-x | docker/start.sh | 55 |
1 files changed, 12 insertions, 43 deletions
diff --git a/docker/start.sh b/docker/start.sh index cea6e54e7d..b560b2bc0a 100755 --- a/docker/start.sh +++ b/docker/start.sh @@ -1,43 +1,12 @@ -#!/bin/bash - -# - -if ! test -d /data/gogs -then - mkdir -p /var/run/sshd - mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git -fi - -if ! test -d /data/ssh -then - mkdir /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 - -service ssh start - -ln -sf /data/gogs/log ./log -ln -sf /data/gogs/data ./data -ln -sf /data/git /home/git - - -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 - -chown -R git:git /data . -exec su git -c "./gogs web" +#!/bin/sh + +# Bind linked docker container to localhost socket using socat +env | sed -En 's|(.*)_PORT_([0-9]*)_TCP=tcp://(.*):(.*)|\1_\2 socat -ls TCP4-LISTEN:\2,fork,reuseaddr TCP4:\3:\4|p' | \ +while read NAME CMD; do + mkdir -p /app/gogs/docker/s6/$NAME + echo -e "#!/bin/sh\nexec $CMD" > /app/gogs/docker/s6/$NAME/run + chmod +x /app/gogs/docker/s6/$NAME/run +done + +# Exec S6 as process manager for gogs and dropbear ssh +exec /usr/bin/s6-svscan /app/gogs/docker/s6/ |