From 6f658562f6331ef4b0da830b212101d4afd04bd3 Mon Sep 17 00:00:00 2001 From: Joey Eamigh <55670930+JoeyEamigh@users.noreply.github.com> Date: Tue, 17 Sep 2024 18:53:10 -0400 Subject: [PATCH] add support for alternate postgres ports and db names in docker --- config/database.yml | 6 +++--- dev-docker-entrypoint.sh | 17 ++++++++++++++--- dev-docker-sidekiq-entrypoint.sh | 9 ++++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/config/database.yml b/config/database.yml index 69c0ff23..1977b027 100644 --- a/config/database.yml +++ b/config/database.yml @@ -11,13 +11,13 @@ default: &default development: <<: *default - database: dawarich_development + database: <%= ENV['DATABASE_NAME'] || 'dawarich_development' %> test: <<: *default - database: dawarich_test + database: <%= ENV['DATABASE_NAME'] || 'dawarich_test' %> production: <<: *default - database: dawarich_production + database: <%= ENV['DATABASE_NAME'] || 'dawarich_production' %> url: <%= ENV['DATABASE_URL'] %> diff --git a/dev-docker-entrypoint.sh b/dev-docker-entrypoint.sh index f7b6fda4..385b50da 100644 --- a/dev-docker-entrypoint.sh +++ b/dev-docker-entrypoint.sh @@ -7,11 +7,18 @@ set -e echo "Environment: $RAILS_ENV" +# set env var defaults +DATABASE_HOST=${DATABASE_HOST:-"dawarich_db"} +DATABASE_PORT=${DATABASE_PORT:-5432} +DATABASE_USERNAME=${DATABASE_USERNAME:-"postgres"} +DATABASE_PASSWORD=${DATABASE_PASSWORD:-"password"} +DATABASE_NAME=${DATABASE_NAME:-"dawarich_development"} + # Remove pre-existing puma/passenger server.pid rm -f $APP_PATH/tmp/pids/server.pid # Wait for the database to be ready -until nc -zv $DATABASE_HOST 5432; do +until nc -zv $DATABASE_HOST ${DATABASE_PORT:-5432}; do echo "Waiting for PostgreSQL to be ready..." sleep 1 done @@ -21,8 +28,12 @@ gem update --system 3.5.7 gem install bundler --version '2.5.9' # Create the database -echo "Creating database $DATABASE_NAME..." -bundle exec rails db:create +if [ "$(psql "postgres://$DATABASE_USERNAME:$DATABASE_PASSWORD@$DATABASE_HOST:$DATABASE_PORT" -XtAc "SELECT 1 FROM pg_database WHERE datname='$DATABASE_NAME'")" = '1' ]; then + echo "Database $DATABASE_NAME already exists, skipping creation..." +else + echo "Creating database $DATABASE_NAME..." + bundle exec rails db:create +fi # Run database migrations echo "PostgreSQL is ready. Running database migrations..." diff --git a/dev-docker-sidekiq-entrypoint.sh b/dev-docker-sidekiq-entrypoint.sh index 9fdecf4f..db7c87e9 100644 --- a/dev-docker-sidekiq-entrypoint.sh +++ b/dev-docker-sidekiq-entrypoint.sh @@ -4,8 +4,15 @@ set -e echo "Environment: $RAILS_ENV" +# set env var defaults +DATABASE_HOST=${DATABASE_HOST:-"dawarich_db"} +DATABASE_PORT=${DATABASE_PORT:-5432} +DATABASE_USER=${DATABASE_USER:-"postgres"} +DATABASE_PASSWORD=${DATABASE_PASSWORD:-"password"} +DATABASE_NAME=${DATABASE_NAME:-"dawarich_development"} + # Wait for the database to be ready -until nc -zv $DATABASE_HOST 5432; do +until nc -zv $DATABASE_HOST ${DATABASE_PORT:-5432}; do echo "Waiting for PostgreSQL to be ready..." sleep 1 done