mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Docker socat link creation
				
					
				
			- `start.sh` will now verify that the port is not already used by another service - Resolve #1807 - Log when a service is created, or could not be created - Keep track of which port is already used, including goes & sshd port
This commit is contained in:
		| @@ -13,12 +13,24 @@ for f in /data/gogs/data /data/gogs/conf /data/gogs/log /data/git /data/ssh; do | |||||||
| done | done | ||||||
|  |  | ||||||
| # Bind linked docker container to localhost socket using socat | # 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' | \ | USED_PORT="80:443:22" | ||||||
| while read NAME CMD; do | while read NAME ADDR PORT; do | ||||||
|     mkdir -p /app/gogs/docker/s6/SOCAT_$NAME |     if test -z "$NAME$ADDR$PORT"; then | ||||||
|     echo -e "#!/bin/sh\nexec $CMD" > /app/gogs/docker/s6/SOCAT_$NAME/run |         continue | ||||||
|     chmod +x /app/gogs/docker/s6/SOCAT_$NAME/run |     elif echo $USED_PORT | grep -E "(^|:)$PORT($|:)" > /dev/null; then | ||||||
| done |         echo "init:socat | Can't bind linked container ${NAME} to localhost, port ${PORT} already in use" 1>&2 | ||||||
|  |     else | ||||||
|  |         SERV_FOLDER=/app/gogs/docker/s6/SOCAT_${NAME}_${PORT} | ||||||
|  |         mkdir -p ${SERV_FOLDER} | ||||||
|  |         CMD="socat -ls TCP4-LISTEN:${PORT},fork,reuseaddr TCP4:${ADDR}:${PORT}" | ||||||
|  |         echo -e "#!/bin/sh\nexec $CMD" > ${SERV_FOLDER}/run | ||||||
|  |         chmod +x ${SERV_FOLDER}/run | ||||||
|  |         USED_PORT="${USED_PORT}:${PORT}" | ||||||
|  |         echo "init:socat | Linked container ${NAME} will be binded to localhost on port ${PORT}" 1>&2 | ||||||
|  |     fi | ||||||
|  | done << EOT | ||||||
|  | $(env | sed -En 's|(.*)_PORT_([0-9]+)_TCP=tcp://(.*):([0-9]+)|\1 \3 \4|p') | ||||||
|  | EOT | ||||||
|  |  | ||||||
| # Exec CMD or S6 by default if nothing present | # Exec CMD or S6 by default if nothing present | ||||||
| if [ $# -gt 0 ];then | if [ $# -gt 0 ];then | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user