From b75e335a54a73922cc94ffa93143c01b0beac91b 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 a4c275b7..c4eb8125 100644 --- a/docker/web-entrypoint.sh +++ b/docker/web-entrypoint.sh @@ -52,4 +52,4 @@ bundle exec rake data:migrate # fi # run passed commands -bundle exec ${@} +exec bundle exec "${@}" From eb111c4341a1eabe0742af684eab9544976a1e07 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..a24ba39e 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 c4eb8125..ec5ea988 100644 --- a/docker/web-entrypoint.sh +++ b/docker/web-entrypoint.sh @@ -10,22 +10,22 @@ 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 # Remove pre-existing puma/passenger server.pid -rm -f $APP_PATH/tmp/pids/server.pid +rm -f "$APP_PATH/tmp/pids/server.pid" echo "Attempting to create database $DATABASE_NAME if it doesn't exist..." PGPASSWORD=$DATABASE_PASSWORD createdb -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USERNAME" "$DATABASE_NAME" 2>/dev/null || echo "Note: Database may already exist or couldn't be created now" From ceb03c810f63b20dfce7fb1d64390a19d9b015fa 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 a24ba39e..e381ceaf 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 ec5ea988..9690cf9e 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 # Remove pre-existing puma/passenger server.pid