summaryrefslogtreecommitdiffstats
path: root/docker/start.sh
diff options
context:
space:
mode:
Diffstat (limited to 'docker/start.sh')
-rwxr-xr-xdocker/start.sh55
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/