]> source.dussan.org Git - gitea.git/commitdiff
Docker Container: Init 1 & Initialisation
authorJean-Philippe Roemer <roemer.jp@gmail.com>
Fri, 2 Oct 2015 20:54:55 +0000 (21:54 +0100)
committerJean-Philippe Roemer <roemer.jp@gmail.com>
Fri, 2 Oct 2015 22:13:39 +0000 (23:13 +0100)
- Now using a setup script before starting the app. The separation of
the run script and the setup script will make service initialisation a
little bit clearer
- Now calling start.sh script as ENTRYPOINT and S6 as CMD. This way
when running the container with just a shell script, the start.sh
script will be launched before, making debugging easier
- Added note about `.dockerignore` ignored during Docker Hub Automated
Build

.dockerignore
Dockerfile
docker/README.md
docker/s6/gogs/run
docker/s6/gogs/setup [new file with mode: 0755]
docker/s6/openssh/run
docker/s6/openssh/setup [new file with mode: 0755]
docker/start.sh

index 5139905d1b176f49e7c0b083fe628c0429921ea6..8822b3436fe2060c21abeb32bb205a81d0ea97b7 100644 (file)
@@ -1,7 +1,15 @@
 .git
+.git/
+.git/*
 conf
+conf/
+conf/*
 packager
+packager/
+packager/*
 scripts
+scripts/
+scripts/*
 *.yml
 *.md
 .bra.toml
index 1f5c9b5d9906e73a696c132c3f80c8a62ac444b0..b98d198afde363388c0fbabb43d7f4581009b8ce 100644 (file)
@@ -18,4 +18,5 @@ RUN ./docker/build.sh
 # Configure Docker Container
 VOLUME ["/data"]
 EXPOSE 22 3000
-CMD ["docker/start.sh"]
+ENTRYPOINT ["docker/start.sh"]
+CMD ["/usr/bin/s6-svscan", "/app/gogs/docker/s6/"]
index ee7653e3259c4603b3399f734ee46f8ae4d55a5b..63a17d2efb6c288c9220814d5357acd46bdd049a 100644 (file)
@@ -17,7 +17,7 @@ $ mkdir -p /var/gogs
 $ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
 
 # Use `docker start` if you have stopped it.
-$ docker start gogs 
+$ docker start gogs
 ```
 
 Files will be store in local path `/var/gogs` in my case.
@@ -55,7 +55,7 @@ Most of settings are obvious and easy to understand, but there are some settings
 - **Domain**: fill in with Docker container IP(e.g. `192.168.99.100`). But if you want to access your Gogs instance from a different physical machine, please fill in with the hostname or IP address of the Docker host machine.
 - **SSH Port**: Use the exposed port from Docker container. For example, your SSH server listens on `22` inside Docker, but you expose it by `10022:22`, then use `10022` for this value.
 - **HTTP Port**: Use port you want Gogs to listen on inside Docker container. For example, your Gogs listens on `3000` inside Docker, and you expose it by `10080:3000`, but you still use `3000` for this value.
-- **Application URL**: Use combination of **Domain** and **exposed HTTP Port** values(e.g. `http://192.168.99.100:10080/`). 
+- **Application URL**: Use combination of **Domain** and **exposed HTTP Port** values(e.g. `http://192.168.99.100:10080/`).
 
 Full documentation of settings can be found [here](http://gogs.io/docs/advanced/configuration_cheat_sheet.html).
 
@@ -68,4 +68,9 @@ Steps to upgrade Gogs with Docker:
 - `docker pull gogs/gogs`
 - `docker stop gogs`
 - `docker rm gogs`
-- Finally, create container as the first time and don't forget to do same volume and port mapping.
\ No newline at end of file
+- Finally, create container as the first time and don't forget to do same volume and port mapping.
+
+## Known Issues
+
+- [Use ctrl+c when clone through SSH makes Docker exit unexpectedly](https://github.com/gogits/gogs/issues/1499)
+- `.dockerignore` seems to be ignored during Docker Hub Automated build
index 626012c218e5481fa3bb3dba273d5eef61b8aced..1aa70eb41d46b6334b3a2d4389e0216dc7b1c56c 100755 (executable)
@@ -1,26 +1,8 @@
 #!/bin/sh
-USER=git
 
-if ! test -d /data/gogs; then
-       mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git
+if test -f ./setup; then
+    source ./setup
 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=${GOGS_CUSTOM}" > ~git/.ssh/environment
-    chmod 600 ~git/.ssh/environment
-fi
-
-cd /app/gogs
-
-ln -sf /data/gogs/log  ./log
-ln -sf /data/gogs/data ./data
-
-chown -R git:git /data /app/gogs ~git/
-
-export USER
+export USER=git
 exec gosu $USER /app/gogs/gogs web
diff --git a/docker/s6/gogs/setup b/docker/s6/gogs/setup
new file mode 100755 (executable)
index 0000000..6270d55
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+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=${GOGS_CUSTOM}" > ~git/.ssh/environment
+    chmod 600 ~git/.ssh/environment
+fi
+
+cd /app/gogs
+
+ln -sf /data/gogs/log  ./log
+ln -sf /data/gogs/data ./data
+
+chown -R git:git /data /app/gogs ~git/
index 444863a5c4532be3caa269dd585a915cea89aa5a..99172aab6990c9ce8345b163c63bbc26c1fed1c3 100755 (executable)
@@ -1,15 +1,7 @@
 #!/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/*
+if test -f ./setup; then
+    source ./setup
 fi
 
 exec gosu root /usr/sbin/sshd -D -f /app/gogs/docker/sshd_config
diff --git a/docker/s6/openssh/setup b/docker/s6/openssh/setup
new file mode 100755 (executable)
index 0000000..5997a33
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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
index b560b2bc0a3d2d45deb7a382d9501d3fea70eb9c..c824fe911c3a0a6010f0a3ab0017a1a14a702aff 100755 (executable)
@@ -8,5 +8,9 @@ while read NAME CMD; do
     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/
+# Exec CMD or S6 by default if nothing present
+if [ $# -gt 0 ];then
+    exec "$@"
+else
+    exec /usr/bin/s6-svscan /app/gogs/docker/s6/
+fi