From 779b7123f125b51a9b04ccc36fb25bbdd9a9725d Mon Sep 17 00:00:00 2001 From: Marius Bezuidenhout Date: Wed, 16 Jul 2025 12:51:35 +0200 Subject: [PATCH 1/2] Added functionality to choose another user than 'postgres' --- 13-to-14/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 13-to-15/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 13-to-16/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 13-to-17/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 14-to-15/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 14-to-16/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 14-to-17/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 15-to-16/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 15-to-17/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 16-to-17/docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- docker-upgrade | 38 +++++++++++++++++++++++++++++++++++--- 11 files changed, 385 insertions(+), 33 deletions(-) diff --git a/13-to-14/docker-upgrade b/13-to-14/docker-upgrade index c8c0699..ad27fe3 100755 --- a/13-to-14/docker-upgrade +++ b/13-to-14/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/13-to-15/docker-upgrade b/13-to-15/docker-upgrade index c8c0699..ad27fe3 100755 --- a/13-to-15/docker-upgrade +++ b/13-to-15/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/13-to-16/docker-upgrade b/13-to-16/docker-upgrade index c8c0699..ad27fe3 100755 --- a/13-to-16/docker-upgrade +++ b/13-to-16/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/13-to-17/docker-upgrade b/13-to-17/docker-upgrade index c8c0699..ad27fe3 100755 --- a/13-to-17/docker-upgrade +++ b/13-to-17/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/14-to-15/docker-upgrade b/14-to-15/docker-upgrade index c8c0699..ad27fe3 100755 --- a/14-to-15/docker-upgrade +++ b/14-to-15/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/14-to-16/docker-upgrade b/14-to-16/docker-upgrade index c8c0699..ad27fe3 100755 --- a/14-to-16/docker-upgrade +++ b/14-to-16/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/14-to-17/docker-upgrade b/14-to-17/docker-upgrade index c8c0699..ad27fe3 100755 --- a/14-to-17/docker-upgrade +++ b/14-to-17/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/15-to-16/docker-upgrade b/15-to-16/docker-upgrade index c8c0699..ad27fe3 100755 --- a/15-to-16/docker-upgrade +++ b/15-to-16/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/15-to-17/docker-upgrade b/15-to-17/docker-upgrade index c8c0699..ad27fe3 100755 --- a/15-to-17/docker-upgrade +++ b/15-to-17/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/16-to-17/docker-upgrade b/16-to-17/docker-upgrade index c8c0699..ad27fe3 100755 --- a/16-to-17/docker-upgrade +++ b/16-to-17/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then diff --git a/docker-upgrade b/docker-upgrade index c8c0699..ad27fe3 100755 --- a/docker-upgrade +++ b/docker-upgrade @@ -1,6 +1,34 @@ #!/bin/bash set -e +if [[ -n "$PGUSER" && -z "$PGUID" ]]; then + echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 + exit 1 +fi + +if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then + echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 + exit 1 +fi + +if [[ -n "$PGUSER" && -z "$PGGID" ]]; then + PGGID="$PGUID" +fi + +: "${PGUSER:=postgres}" + +if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then + echo "Creating group '$PGUSER' with GID $PGGID..." + addgroup --system --gid "$PGGID" "$PGUSER" + echo "Group created." +fi + +if [[ -z "$(getent passwd "$PGUSER")" ]]; then + echo "User '$PGUSER' does not exist. Creating..." + adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" + echo "User '$PGUSER' created." +fi + if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -8,9 +36,13 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown postgres . - chown -R postgres "$PGDATAOLD" "$PGDATANEW" - exec gosu postgres "$BASH_SOURCE" "$@" + chown "$PGUSER" . + chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" + exec gosu "$PGUSER" "$BASH_SOURCE" "$@" +fi + +if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then + POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi if [ "$1" = 'pg_upgrade' ]; then From c5a6c213dc0200c8a46c0f4aaaf5dcdd131f5378 Mon Sep 17 00:00:00 2001 From: Marius Bezuidenhout Date: Wed, 16 Jul 2025 13:35:42 +0200 Subject: [PATCH 2/2] Adding PGUSER to initdb command if not set. --- 13-to-14/Dockerfile | 8 ++++---- 13-to-14/docker-upgrade | 36 ++++-------------------------------- 13-to-15/Dockerfile | 8 ++++---- 13-to-15/docker-upgrade | 36 ++++-------------------------------- 13-to-16/Dockerfile | 8 ++++---- 13-to-16/docker-upgrade | 36 ++++-------------------------------- 13-to-17/Dockerfile | 8 ++++---- 13-to-17/docker-upgrade | 36 ++++-------------------------------- 14-to-15/Dockerfile | 8 ++++---- 14-to-15/docker-upgrade | 36 ++++-------------------------------- 14-to-16/Dockerfile | 8 ++++---- 14-to-16/docker-upgrade | 36 ++++-------------------------------- 14-to-17/Dockerfile | 8 ++++---- 14-to-17/docker-upgrade | 36 ++++-------------------------------- 15-to-16/Dockerfile | 8 ++++---- 15-to-16/docker-upgrade | 36 ++++-------------------------------- 15-to-17/Dockerfile | 8 ++++---- 15-to-17/docker-upgrade | 36 ++++-------------------------------- 16-to-17/Dockerfile | 8 ++++---- 16-to-17/docker-upgrade | 36 ++++-------------------------------- Dockerfile.template | 8 ++++---- docker-upgrade | 36 ++++-------------------------------- 22 files changed, 88 insertions(+), 396 deletions(-) diff --git a/13-to-14/Dockerfile b/13-to-14/Dockerfile index 8e907ce..928f50e 100644 --- a/13-to-14/Dockerfile +++ b/13-to-14/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/13/bin -ENV PGBINNEW /usr/lib/postgresql/14/bin +ENV PGBINOLD=/usr/lib/postgresql/13/bin +ENV PGBINNEW=/usr/lib/postgresql/14/bin -ENV PGDATAOLD /var/lib/postgresql/13/data -ENV PGDATANEW /var/lib/postgresql/14/data +ENV PGDATAOLD=/var/lib/postgresql/13/data +ENV PGDATANEW=/var/lib/postgresql/14/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/13-to-14/docker-upgrade b/13-to-14/docker-upgrade index ad27fe3..509f4c7 100755 --- a/13-to-14/docker-upgrade +++ b/13-to-14/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/13-to-15/Dockerfile b/13-to-15/Dockerfile index c0da60e..369ee7f 100644 --- a/13-to-15/Dockerfile +++ b/13-to-15/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/13/bin -ENV PGBINNEW /usr/lib/postgresql/15/bin +ENV PGBINOLD=/usr/lib/postgresql/13/bin +ENV PGBINNEW=/usr/lib/postgresql/15/bin -ENV PGDATAOLD /var/lib/postgresql/13/data -ENV PGDATANEW /var/lib/postgresql/15/data +ENV PGDATAOLD=/var/lib/postgresql/13/data +ENV PGDATANEW=/var/lib/postgresql/15/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/13-to-15/docker-upgrade b/13-to-15/docker-upgrade index ad27fe3..509f4c7 100755 --- a/13-to-15/docker-upgrade +++ b/13-to-15/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/13-to-16/Dockerfile b/13-to-16/Dockerfile index 444b8e3..3d65e02 100644 --- a/13-to-16/Dockerfile +++ b/13-to-16/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/13/bin -ENV PGBINNEW /usr/lib/postgresql/16/bin +ENV PGBINOLD=/usr/lib/postgresql/13/bin +ENV PGBINNEW=/usr/lib/postgresql/16/bin -ENV PGDATAOLD /var/lib/postgresql/13/data -ENV PGDATANEW /var/lib/postgresql/16/data +ENV PGDATAOLD=/var/lib/postgresql/13/data +ENV PGDATANEW=/var/lib/postgresql/16/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/13-to-16/docker-upgrade b/13-to-16/docker-upgrade index ad27fe3..509f4c7 100755 --- a/13-to-16/docker-upgrade +++ b/13-to-16/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/13-to-17/Dockerfile b/13-to-17/Dockerfile index 145d1da..52774ff 100644 --- a/13-to-17/Dockerfile +++ b/13-to-17/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/13/bin -ENV PGBINNEW /usr/lib/postgresql/17/bin +ENV PGBINOLD=/usr/lib/postgresql/13/bin +ENV PGBINNEW=/usr/lib/postgresql/17/bin -ENV PGDATAOLD /var/lib/postgresql/13/data -ENV PGDATANEW /var/lib/postgresql/17/data +ENV PGDATAOLD=/var/lib/postgresql/13/data +ENV PGDATANEW=/var/lib/postgresql/17/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/13-to-17/docker-upgrade b/13-to-17/docker-upgrade index ad27fe3..509f4c7 100755 --- a/13-to-17/docker-upgrade +++ b/13-to-17/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/14-to-15/Dockerfile b/14-to-15/Dockerfile index cf370ee..4b323b2 100644 --- a/14-to-15/Dockerfile +++ b/14-to-15/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/14/bin -ENV PGBINNEW /usr/lib/postgresql/15/bin +ENV PGBINOLD=/usr/lib/postgresql/14/bin +ENV PGBINNEW=/usr/lib/postgresql/15/bin -ENV PGDATAOLD /var/lib/postgresql/14/data -ENV PGDATANEW /var/lib/postgresql/15/data +ENV PGDATAOLD=/var/lib/postgresql/14/data +ENV PGDATANEW=/var/lib/postgresql/15/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/14-to-15/docker-upgrade b/14-to-15/docker-upgrade index ad27fe3..509f4c7 100755 --- a/14-to-15/docker-upgrade +++ b/14-to-15/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/14-to-16/Dockerfile b/14-to-16/Dockerfile index 72ce29d..5bd0f89 100644 --- a/14-to-16/Dockerfile +++ b/14-to-16/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/14/bin -ENV PGBINNEW /usr/lib/postgresql/16/bin +ENV PGBINOLD=/usr/lib/postgresql/14/bin +ENV PGBINNEW=/usr/lib/postgresql/16/bin -ENV PGDATAOLD /var/lib/postgresql/14/data -ENV PGDATANEW /var/lib/postgresql/16/data +ENV PGDATAOLD=/var/lib/postgresql/14/data +ENV PGDATANEW=/var/lib/postgresql/16/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/14-to-16/docker-upgrade b/14-to-16/docker-upgrade index ad27fe3..509f4c7 100755 --- a/14-to-16/docker-upgrade +++ b/14-to-16/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/14-to-17/Dockerfile b/14-to-17/Dockerfile index 2cec8e9..1e8d53d 100644 --- a/14-to-17/Dockerfile +++ b/14-to-17/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/14/bin -ENV PGBINNEW /usr/lib/postgresql/17/bin +ENV PGBINOLD=/usr/lib/postgresql/14/bin +ENV PGBINNEW=/usr/lib/postgresql/17/bin -ENV PGDATAOLD /var/lib/postgresql/14/data -ENV PGDATANEW /var/lib/postgresql/17/data +ENV PGDATAOLD=/var/lib/postgresql/14/data +ENV PGDATANEW=/var/lib/postgresql/17/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/14-to-17/docker-upgrade b/14-to-17/docker-upgrade index ad27fe3..509f4c7 100755 --- a/14-to-17/docker-upgrade +++ b/14-to-17/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/15-to-16/Dockerfile b/15-to-16/Dockerfile index 22b5a39..22fc47d 100644 --- a/15-to-16/Dockerfile +++ b/15-to-16/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/15/bin -ENV PGBINNEW /usr/lib/postgresql/16/bin +ENV PGBINOLD=/usr/lib/postgresql/15/bin +ENV PGBINNEW=/usr/lib/postgresql/16/bin -ENV PGDATAOLD /var/lib/postgresql/15/data -ENV PGDATANEW /var/lib/postgresql/16/data +ENV PGDATAOLD=/var/lib/postgresql/15/data +ENV PGDATANEW=/var/lib/postgresql/16/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/15-to-16/docker-upgrade b/15-to-16/docker-upgrade index ad27fe3..509f4c7 100755 --- a/15-to-16/docker-upgrade +++ b/15-to-16/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/15-to-17/Dockerfile b/15-to-17/Dockerfile index 10ef8ff..1cf4e1f 100644 --- a/15-to-17/Dockerfile +++ b/15-to-17/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/15/bin -ENV PGBINNEW /usr/lib/postgresql/17/bin +ENV PGBINOLD=/usr/lib/postgresql/15/bin +ENV PGBINNEW=/usr/lib/postgresql/17/bin -ENV PGDATAOLD /var/lib/postgresql/15/data -ENV PGDATANEW /var/lib/postgresql/17/data +ENV PGDATAOLD=/var/lib/postgresql/15/data +ENV PGDATANEW=/var/lib/postgresql/17/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/15-to-17/docker-upgrade b/15-to-17/docker-upgrade index ad27fe3..509f4c7 100755 --- a/15-to-17/docker-upgrade +++ b/15-to-17/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/16-to-17/Dockerfile b/16-to-17/Dockerfile index fcf5c9b..07a965b 100644 --- a/16-to-17/Dockerfile +++ b/16-to-17/Dockerfile @@ -15,11 +15,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/16/bin -ENV PGBINNEW /usr/lib/postgresql/17/bin +ENV PGBINOLD=/usr/lib/postgresql/16/bin +ENV PGBINNEW=/usr/lib/postgresql/17/bin -ENV PGDATAOLD /var/lib/postgresql/16/data -ENV PGDATANEW /var/lib/postgresql/17/data +ENV PGDATAOLD=/var/lib/postgresql/16/data +ENV PGDATANEW=/var/lib/postgresql/17/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/16-to-17/docker-upgrade b/16-to-17/docker-upgrade index ad27fe3..509f4c7 100755 --- a/16-to-17/docker-upgrade +++ b/16-to-17/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi diff --git a/Dockerfile.template b/Dockerfile.template index 287e789..09b1fa6 100644 --- a/Dockerfile.template +++ b/Dockerfile.template @@ -9,11 +9,11 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/* -ENV PGBINOLD /usr/lib/postgresql/{{ .old }}/bin -ENV PGBINNEW /usr/lib/postgresql/{{ .new }}/bin +ENV PGBINOLD=/usr/lib/postgresql/{{ .old }}/bin +ENV PGBINNEW=/usr/lib/postgresql/{{ .new }}/bin -ENV PGDATAOLD /var/lib/postgresql/{{ .old }}/data -ENV PGDATANEW /var/lib/postgresql/{{ .new }}/data +ENV PGDATAOLD=/var/lib/postgresql/{{ .old }}/data +ENV PGDATANEW=/var/lib/postgresql/{{ .new }}/data RUN set -eux; \ mkdir -p "$PGDATAOLD" "$PGDATANEW"; \ diff --git a/docker-upgrade b/docker-upgrade index ad27fe3..509f4c7 100755 --- a/docker-upgrade +++ b/docker-upgrade @@ -1,34 +1,6 @@ #!/bin/bash set -e -if [[ -n "$PGUSER" && -z "$PGUID" ]]; then - echo "Error: PGUSER is set to '$PGUSER' but PGUID is not set." >&2 - exit 1 -fi - -if [[ ! "$PGUID" =~ ^[0-9]+$ ]]; then - echo "Error: PGUID must be an integer. Current value: '$PGUID'" >&2 - exit 1 -fi - -if [[ -n "$PGUSER" && -z "$PGGID" ]]; then - PGGID="$PGUID" -fi - -: "${PGUSER:=postgres}" - -if [[ -n "$PGGID" && -z "$(getent group "$PGGID")" ]]; then - echo "Creating group '$PGUSER' with GID $PGGID..." - addgroup --system --gid "$PGGID" "$PGUSER" - echo "Group created." -fi - -if [[ -z "$(getent passwd "$PGUSER")" ]]; then - echo "User '$PGUSER' does not exist. Creating..." - adduser --system --no-create-home --uid "$PGUID" --gid "$PGGID" --home /var/lib/postgresql --disabled-password "$PGUSER" - echo "User '$PGUSER' created." -fi - if [ "$#" -eq 0 -o "${1:0:1}" = '-' ]; then set -- pg_upgrade "$@" fi @@ -36,12 +8,12 @@ fi if [ "$1" = 'pg_upgrade' -a "$(id -u)" = '0' ]; then mkdir -p "$PGDATAOLD" "$PGDATANEW" chmod 700 "$PGDATAOLD" "$PGDATANEW" - chown "$PGUSER" . - chown -R "$PGUSER" "$PGDATAOLD" "$PGDATANEW" - exec gosu "$PGUSER" "$BASH_SOURCE" "$@" + chown postgres . + chown -R postgres "$PGDATAOLD" "$PGDATANEW" + exec gosu postgres "$BASH_SOURCE" "$@" fi -if [[ ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then +if [[ -n "$PGUSER" && ! "$POSTGRES_INITDB_ARGS" =~ ((--username=|-U[[:space:]])) ]]; then POSTGRES_INITDB_ARGS+=" --username=$PGUSER" fi