diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index d0e712a..143fed7 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -11,18 +11,35 @@ if ! id "$DOCKER_USER" >/dev/null 2>&1; then GROUP_ID=${PGID:-9001} echo "Starting with $USER_ID:$GROUP_ID (UID:GID)" - addgroup --gid $GROUP_ID $DOCKER_GROUP - adduser $DOCKER_USER --shell /bin/sh --uid $USER_ID --ingroup $DOCKER_GROUP --disabled-password --gecos "" + # Check if the desired GROUP_ID is already in use + if getent group $GROUP_ID >/dev/null 2>&1; then + EXISTING_GROUP=$(getent group $GROUP_ID | cut -d: -f1) + echo "GID $GROUP_ID is already in use by group $EXISTING_GROUP. Using this group." + DOCKER_GROUP=$EXISTING_GROUP + else + addgroup --gid $GROUP_ID $DOCKER_GROUP + echo "Created group $DOCKER_GROUP with GID $GROUP_ID." + fi + + # Check if the desired USER_ID is already in use + if id -u $USER_ID >/dev/null 2>&1; then + EXISTING_USER=$(getent passwd $USER_ID | cut -d: -f1) + echo "UID $USER_ID is already in use by user $EXISTING_USER. Using this user." + DOCKER_USER=$EXISTING_USER + else + # Create user with the specified UID and associated group + adduser --shell /bin/sh --uid $USER_ID --ingroup $DOCKER_GROUP --disabled-password --gecos "" $DOCKER_USER + echo "Created user $DOCKER_USER with UID $USER_ID." + fi + # Set ownership and permissions chown -vR $USER_ID:$GROUP_ID /opt/minecraft chmod -vR ug+rwx /opt/minecraft - if [ "$SKIP_PERM_CHECK" != "true" ] - then + if [ "$SKIP_PERM_CHECK" != "true" ]; then chown -vR $USER_ID:$GROUP_ID /data fi fi export HOME=/home/$DOCKER_USER -exec gosu $DOCKER_USER:$DOCKER_GROUP java -jar -Xms$MEMORYSIZE -Xmx$MEMORYSIZE $JAVAFLAGS /opt/minecraft/paperspigot.jar $PAPERMC_FLAGS nogui - \ No newline at end of file +exec gosu $DOCKER_USER:$DOCKER_GROUP java -jar -Xms$MEMORYSIZE -Xmx$MEMORYSIZE $JAVAFLAGS /opt/minecraft/paperspigot.jar $PAPERMC_FLAGS nogui \ No newline at end of file