From 8bfce7ccb679c4f47b9a5961dfa02bb8f9c7e79a Mon Sep 17 00:00:00 2001 From: Aljoscha Grebe Date: Sat, 18 Jan 2025 00:11:34 +0100 Subject: [PATCH 1/3] fix: use exec in entrypoints to ensure bundler receives signals --- docker/sidekiq-entrypoint.sh | 2 +- docker/web-entrypoint.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/sidekiq-entrypoint.sh b/docker/sidekiq-entrypoint.sh index b55f3ff0..d137874a 100644 --- a/docker/sidekiq-entrypoint.sh +++ b/docker/sidekiq-entrypoint.sh @@ -33,4 +33,4 @@ done echo "✅ PostgreSQL is ready!" # run sidekiq -bundle exec sidekiq +exec bundle exec sidekiq diff --git a/docker/web-entrypoint.sh b/docker/web-entrypoint.sh index 9642055f..7c43f481 100644 --- a/docker/web-entrypoint.sh +++ b/docker/web-entrypoint.sh @@ -75,4 +75,4 @@ echo "Running seeds..." bundle exec rails db:seed # run passed commands -bundle exec ${@} +exec bundle exec "${@}" From e5f52a61256f8fa685564215c1382c03d5539373 Mon Sep 17 00:00:00 2001 From: Aljoscha Grebe Date: Sat, 18 Jan 2025 00:18:06 +0100 Subject: [PATCH 2/3] escape all strings is entrypoints --- docker/sidekiq-entrypoint.sh | 20 ++++++++++---------- docker/web-entrypoint.sh | 22 +++++++++++----------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docker/sidekiq-entrypoint.sh b/docker/sidekiq-entrypoint.sh index d137874a..83ae861e 100644 --- a/docker/sidekiq-entrypoint.sh +++ b/docker/sidekiq-entrypoint.sh @@ -10,18 +10,18 @@ echo "⚠️ Starting Sidekiq in $RAILS_ENV environment ⚠️" # Parse DATABASE_URL if present, otherwise use individual variables if [ -n "$DATABASE_URL" ]; then # Extract components from DATABASE_URL - DATABASE_HOST=$(echo $DATABASE_URL | awk -F[@/] '{print $4}') - DATABASE_PORT=$(echo $DATABASE_URL | awk -F[@/:] '{print $5}') - DATABASE_USERNAME=$(echo $DATABASE_URL | awk -F[:/@] '{print $4}') - DATABASE_PASSWORD=$(echo $DATABASE_URL | awk -F[:/@] '{print $5}') - DATABASE_NAME=$(echo $DATABASE_URL | awk -F[@/] '{print $5}') + DATABASE_HOST="$(echo "$DATABASE_URL" | awk -F[@/] '{print $4}')" + DATABASE_PORT="$(echo "$DATABASE_URL" | awk -F[@/:] '{print $5}')" + DATABASE_USERNAME="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $4}')" + DATABASE_PASSWORD="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $5}')" + DATABASE_NAME="$(echo "$DATABASE_URL" | awk -F[@/] '{print $5}')" else # Use existing environment variables - DATABASE_HOST=${DATABASE_HOST} - DATABASE_PORT=${DATABASE_PORT} - DATABASE_USERNAME=${DATABASE_USERNAME} - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_NAME=${DATABASE_NAME} + DATABASE_HOST="${DATABASE_HOST}" + DATABASE_PORT="${DATABASE_PORT}" + DATABASE_USERNAME="${DATABASE_USERNAME}" + DATABASE_PASSWORD="${DATABASE_PASSWORD}" + DATABASE_NAME="${DATABASE_NAME}" fi # Wait for the database to become available diff --git a/docker/web-entrypoint.sh b/docker/web-entrypoint.sh index 7c43f481..0419cb85 100644 --- a/docker/web-entrypoint.sh +++ b/docker/web-entrypoint.sh @@ -10,18 +10,18 @@ echo "⚠️ Starting Rails environment: $RAILS_ENV ⚠️" # Parse DATABASE_URL if present, otherwise use individual variables if [ -n "$DATABASE_URL" ]; then # Extract components from DATABASE_URL - DATABASE_HOST=$(echo $DATABASE_URL | awk -F[@/] '{print $4}') - DATABASE_PORT=$(echo $DATABASE_URL | awk -F[@/:] '{print $5}') - DATABASE_USERNAME=$(echo $DATABASE_URL | awk -F[:/@] '{print $4}') - DATABASE_PASSWORD=$(echo $DATABASE_URL | awk -F[:/@] '{print $5}') - DATABASE_NAME=$(echo $DATABASE_URL | awk -F[@/] '{print $5}') + DATABASE_HOST="$(echo "$DATABASE_URL" | awk -F[@/] '{print $4}')" + DATABASE_PORT="$(echo "$DATABASE_URL" | awk -F[@/:] '{print $5}')" + DATABASE_USERNAME="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $4}')" + DATABASE_PASSWORD="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $5}')" + DATABASE_NAME="$(echo "$DATABASE_URL" | awk -F[@/] '{print $5}')" else # Use existing environment variables - DATABASE_HOST=${DATABASE_HOST} - DATABASE_PORT=${DATABASE_PORT} - DATABASE_USERNAME=${DATABASE_USERNAME} - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_NAME=${DATABASE_NAME} + DATABASE_HOST="${DATABASE_HOST}" + DATABASE_PORT="${DATABASE_PORT}" + DATABASE_USERNAME="${DATABASE_USERNAME}" + DATABASE_PASSWORD="${DATABASE_PASSWORD}" + DATABASE_NAME="${DATABASE_NAME}" fi # Export main database variables to ensure they're available @@ -32,7 +32,7 @@ export DATABASE_PASSWORD export DATABASE_NAME # Remove pre-existing puma/passenger server.pid -rm -f $APP_PATH/tmp/pids/server.pid +rm -f "$APP_PATH/tmp/pids/server.pid" # Function to check and create a PostgreSQL database create_database() { From 543242cdf3ea610b2629cf7f8ccbfb76a7f2dcff Mon Sep 17 00:00:00 2001 From: Aljoscha Grebe Date: Sat, 18 Jan 2025 00:20:40 +0100 Subject: [PATCH 3/3] remove useless assignments --- docker/sidekiq-entrypoint.sh | 7 ------- docker/web-entrypoint.sh | 7 ------- 2 files changed, 14 deletions(-) diff --git a/docker/sidekiq-entrypoint.sh b/docker/sidekiq-entrypoint.sh index 83ae861e..4140108a 100644 --- a/docker/sidekiq-entrypoint.sh +++ b/docker/sidekiq-entrypoint.sh @@ -15,13 +15,6 @@ if [ -n "$DATABASE_URL" ]; then DATABASE_USERNAME="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $4}')" DATABASE_PASSWORD="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $5}')" DATABASE_NAME="$(echo "$DATABASE_URL" | awk -F[@/] '{print $5}')" -else - # Use existing environment variables - DATABASE_HOST="${DATABASE_HOST}" - DATABASE_PORT="${DATABASE_PORT}" - DATABASE_USERNAME="${DATABASE_USERNAME}" - DATABASE_PASSWORD="${DATABASE_PASSWORD}" - DATABASE_NAME="${DATABASE_NAME}" fi # Wait for the database to become available diff --git a/docker/web-entrypoint.sh b/docker/web-entrypoint.sh index 0419cb85..61e38430 100644 --- a/docker/web-entrypoint.sh +++ b/docker/web-entrypoint.sh @@ -15,13 +15,6 @@ if [ -n "$DATABASE_URL" ]; then DATABASE_USERNAME="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $4}')" DATABASE_PASSWORD="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $5}')" DATABASE_NAME="$(echo "$DATABASE_URL" | awk -F[@/] '{print $5}')" -else - # Use existing environment variables - DATABASE_HOST="${DATABASE_HOST}" - DATABASE_PORT="${DATABASE_PORT}" - DATABASE_USERNAME="${DATABASE_USERNAME}" - DATABASE_PASSWORD="${DATABASE_PASSWORD}" - DATABASE_NAME="${DATABASE_NAME}" fi # Export main database variables to ensure they're available