diff --git a/docker-compose.yml b/docker-compose.yml index dbf96f7d..16d33195 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -101,7 +101,7 @@ services: target: /docker-entrypoint-initdb.d/migrations consistency: cached - type: bind - source: ./worklenz-backend/database/init.sh + source: ./worklenz-backend/database/00_init.sh target: /docker-entrypoint-initdb.d/00_init.sh consistency: cached - type: bind @@ -114,12 +114,14 @@ services: elif command -v apk >/dev/null 2>&1; then apk add --no-cache dos2unix fi - find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c " + + find /docker-entrypoint-initdb.d -type f -name "*.sh" -exec sh -c '"'"' for f; do - dos2unix \"\$f\" 2>/dev/null || true - chmod +x \"\$f\" + dos2unix "$f" 2>/dev/null || true + chmod +x "$f" done - " sh {} + + '"'"' sh {} + + exec docker-entrypoint.sh postgres ' db-backup: @@ -136,12 +138,12 @@ services: - ./pg_backups:/pg_backups #host dir for backups files #setup bassh loop to backup data evey 24h command: > - bash -c "while true; do - sleep 86400; - PGPASSWORD=$$POSTGRES_PASSWORD pg_dump -h worklenz_db -U $$POSTGRES_USER -d $$POSTGRES_DB \ - > /pg_backups/worklenz_db_$(date +%Y-%m-%d_%H-%M-%S).sql; - find /pg_backups -type f -name '*.sql' -mtime +30 -delete; - done" + bash -c "while true; do + sleep 86400; + PGPASSWORD=$$POSTGRES_PASSWORD pg_dump -h worklenz_db -U $$POSTGRES_USER -d $$POSTGRES_DB \ + > /pg_backups/worklenz_db_\$(date +%Y-%m-%d_%H-%M-%S).sql; + find /pg_backups -type f -name '*.sql' -mtime +30 -delete; + done" restart: unless-stopped networks: - worklenz diff --git a/worklenz-backend/database/00-init-db.sh b/worklenz-backend/database/00-init-db.sh deleted file mode 100644 index 9743d435..00000000 --- a/worklenz-backend/database/00-init-db.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -set -e - -# This script controls the order of SQL file execution during database initialization -echo "Starting database initialization..." - -# Check if we have SQL files in expected locations -if [ -f "/docker-entrypoint-initdb.d/sql/0_extensions.sql" ]; then - SQL_DIR="/docker-entrypoint-initdb.d/sql" - echo "Using SQL files from sql/ subdirectory" -elif [ -f "/docker-entrypoint-initdb.d/0_extensions.sql" ]; then - # First time setup - move files to subdirectory - echo "Moving SQL files to sql/ subdirectory..." - mkdir -p /docker-entrypoint-initdb.d/sql - - # Move all SQL files (except this script) to the subdirectory - for f in /docker-entrypoint-initdb.d/*.sql; do - if [ -f "$f" ]; then - cp "$f" /docker-entrypoint-initdb.d/sql/ - echo "Copied $f to sql/ subdirectory" - fi - done - - SQL_DIR="/docker-entrypoint-initdb.d/sql" -else - echo "SQL files not found in expected locations!" - exit 1 -fi - -# Execute SQL files in the correct order -echo "Executing 0_extensions.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/0_extensions.sql" - -echo "Executing 1_tables.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/1_tables.sql" - -echo "Executing indexes.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/indexes.sql" - -echo "Executing 4_functions.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/4_functions.sql" - -echo "Executing triggers.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/triggers.sql" - -echo "Executing 3_views.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/3_views.sql" - -echo "Executing 2_dml.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/2_dml.sql" - -echo "Executing 5_database_user.sql..." -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "$SQL_DIR/5_database_user.sql" - -echo "Database initialization completed successfully" \ No newline at end of file diff --git a/worklenz-backend/database/init.sh b/worklenz-backend/database/00_init.sh similarity index 100% rename from worklenz-backend/database/init.sh rename to worklenz-backend/database/00_init.sh