From 4c3810df7e812ee255d8bcc32740cb8f4364d156 Mon Sep 17 00:00:00 2001 From: Houmgaor Date: Mon, 16 Feb 2026 22:53:09 +0100 Subject: [PATCH] fix: Docker DB init fails due to pg_restore error on existing database (#129) pg_restore would fail because the dump contains CREATE DATABASE but POSTGRES_DB already creates it. With set -e this aborted the script before update/patch schemas could run. - Allow pg_restore to continue past non-fatal errors - Add --no-owner --no-acl to avoid permission mismatches - Force LF line endings for .sh files via .gitattributes - Quote file path variables in schema loops --- .gitattributes | 3 +++ docker/init/setup.sh | 23 ++++++++++------------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.gitattributes b/.gitattributes index dfe077042..50b830be9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,5 @@ # Auto detect text files and perform LF normalization * text=auto + +# Force LF for shell scripts (prevents CRLF breakage in Docker containers) +*.sh text eol=lf diff --git a/docker/init/setup.sh b/docker/init/setup.sh index 46e16274a..78639a18e 100644 --- a/docker/init/setup.sh +++ b/docker/init/setup.sh @@ -1,22 +1,19 @@ #!/bin/bash set -e -echo "INIT!" -pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --verbose /schemas/init.sql - +echo "INIT: Restoring database schema..." +pg_restore --username="$POSTGRES_USER" --dbname="$POSTGRES_DB" --no-owner --no-acl --verbose /schemas/init.sql || { + echo "WARN: pg_restore exited with errors (this is expected if the database already has objects)" +} echo "Updating!" - -for file in /schemas/update-schema/* -do - psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +for file in /schemas/update-schema/*; do + echo " Applying $file" + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f "$file" done - - echo "Patching!" - -for file in /schemas/patch-schema/* -do - psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f $file +for file in /schemas/patch-schema/*; do + echo " Applying $file" + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -1 -f "$file" done \ No newline at end of file