Docker Container: Init 1 & Initialisation
- 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
This commit is contained in:
parent
e5310cdbc1
commit
ad5e0b833c
8 changed files with 63 additions and 37 deletions
|
@ -1,7 +1,15 @@
|
||||||
.git
|
.git
|
||||||
|
.git/
|
||||||
|
.git/*
|
||||||
conf
|
conf
|
||||||
|
conf/
|
||||||
|
conf/*
|
||||||
packager
|
packager
|
||||||
|
packager/
|
||||||
|
packager/*
|
||||||
scripts
|
scripts
|
||||||
|
scripts/
|
||||||
|
scripts/*
|
||||||
*.yml
|
*.yml
|
||||||
*.md
|
*.md
|
||||||
.bra.toml
|
.bra.toml
|
||||||
|
|
|
@ -18,4 +18,5 @@ RUN ./docker/build.sh
|
||||||
# Configure Docker Container
|
# Configure Docker Container
|
||||||
VOLUME ["/data"]
|
VOLUME ["/data"]
|
||||||
EXPOSE 22 3000
|
EXPOSE 22 3000
|
||||||
CMD ["docker/start.sh"]
|
ENTRYPOINT ["docker/start.sh"]
|
||||||
|
CMD ["/usr/bin/s6-svscan", "/app/gogs/docker/s6/"]
|
||||||
|
|
|
@ -69,3 +69,8 @@ Steps to upgrade Gogs with Docker:
|
||||||
- `docker stop gogs`
|
- `docker stop gogs`
|
||||||
- `docker rm gogs`
|
- `docker rm gogs`
|
||||||
- Finally, create container as the first time and don't forget to do same volume and port mapping.
|
- 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
|
||||||
|
|
|
@ -1,26 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
USER=git
|
|
||||||
|
|
||||||
if ! test -d /data/gogs; then
|
if test -f ./setup; then
|
||||||
mkdir -p /data/gogs/data /data/gogs/conf /data/gogs/log /data/git
|
source ./setup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! test -d ~git/.ssh; then
|
export USER=git
|
||||||
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
|
|
||||||
exec gosu $USER /app/gogs/gogs web
|
exec gosu $USER /app/gogs/gogs web
|
||||||
|
|
22
docker/s6/gogs/setup
Executable file
22
docker/s6/gogs/setup
Executable file
|
@ -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/
|
|
@ -1,15 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
if ! test -d /data/ssh
|
if test -f ./setup; then
|
||||||
then
|
source ./setup
|
||||||
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
|
fi
|
||||||
|
|
||||||
exec gosu root /usr/sbin/sshd -D -f /app/gogs/docker/sshd_config
|
exec gosu root /usr/sbin/sshd -D -f /app/gogs/docker/sshd_config
|
||||||
|
|
12
docker/s6/openssh/setup
Executable file
12
docker/s6/openssh/setup
Executable file
|
@ -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
|
|
@ -8,5 +8,9 @@ while read NAME CMD; do
|
||||||
chmod +x /app/gogs/docker/s6/$NAME/run
|
chmod +x /app/gogs/docker/s6/$NAME/run
|
||||||
done
|
done
|
||||||
|
|
||||||
# Exec S6 as process manager for gogs and dropbear ssh
|
# Exec CMD or S6 by default if nothing present
|
||||||
|
if [ $# -gt 0 ];then
|
||||||
|
exec "$@"
|
||||||
|
else
|
||||||
exec /usr/bin/s6-svscan /app/gogs/docker/s6/
|
exec /usr/bin/s6-svscan /app/gogs/docker/s6/
|
||||||
|
fi
|
||||||
|
|
Reference in a new issue