mirror of
				https://github.com/knadh/listmonk.git
				synced 2025-11-01 03:26:32 +08:00 
			
		
		
		
	* Enabling the usage of non root user in Docker * Added docker-entrypoint.sh to .goreleaser.yml * Renamed UID to PUID and GID to PGID
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| set -e
 | |
| 
 | |
| export PUID=${PUID:-0}
 | |
| export PGID=${PGID:-0}
 | |
| export GROUP_NAME="app"
 | |
| export USER_NAME="app"
 | |
| 
 | |
| # This function evaluates if the supplied PGID is already in use
 | |
| # if it is not in use, it creates the group with the PGID
 | |
| # if it is in use, it sets the GROUP_NAME to the existing group
 | |
| create_group() {
 | |
|   if ! getent group ${PGID} > /dev/null 2>&1; then
 | |
|     addgroup -g ${PGID} ${GROUP_NAME}
 | |
|   else
 | |
|     existing_group=$(getent group ${PGID} | cut -d: -f1)
 | |
|     export GROUP_NAME=${existing_group}
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # This function evaluates if the supplied PUID is already in use
 | |
| # if it is not in use, it creates the user with the PUID and PGID
 | |
| create_user() {
 | |
|   if ! getent passwd ${PUID} > /dev/null 2>&1; then
 | |
|     adduser -u ${PUID} -G ${GROUP_NAME} -s /bin/sh -D ${USER_NAME}
 | |
|   else
 | |
|     existing_user=$(getent passwd ${PUID} | cut -d: -f1)
 | |
|     export USER_NAME=${existing_user}
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # Run the needed functions to create the user and group
 | |
| create_group
 | |
| create_user
 | |
| 
 | |
| # Set the ownership of the app directory to the app user
 | |
| chown -R ${PUID}:${PGID} /listmonk
 | |
| 
 | |
| echo "Launching listmonk with user=[${USER_NAME}] group=[${GROUP_NAME}] PUID=[${PUID}] PGID=[${PGID}]"
 | |
| 
 | |
| # If running as root and PUID is not 0, then execute command as PUID
 | |
| # this allows us to run the container as a non-root user
 | |
| if [ "$(id -u)" = "0" ] && [ "${PUID}" != "0" ]; then
 | |
|   su-exec ${PUID}:${PGID} "$@"
 | |
| else
 | |
|   exec "$@"
 | |
| fi
 |