mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	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:
		@@ -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 New Issue
	
	Block a user