From f1e9b7fcfeda2f4c5af5005e9e78ea38bdf3f7fe Mon Sep 17 00:00:00 2001 From: edcrichton Date: Wed, 11 Mar 2026 12:07:35 +0000 Subject: [PATCH] Postgres jdbc points outside of the container If the jdbc connection url points outside of the container, don't start up postgres inside the container If postgres is on the same host as the container, tune java options accordingly --- .../docker/all/micronaut/micronaut-config.sh | 36 +++ .../docker/all/micronaut/micronaut-startup.sh | 50 ++-- .../postgres/micronaut-config-for-postgres.sh | 41 +++- .../docker/all/postgres/postgres-shutdown.sh | 15 +- .../docker/all/postgres/postgres-startup.sh | 222 +++++++++++------- .../docker/all/startup/docker-environment.sh | 8 + .../docker/all/startup/docker-startup.sh | 1 + 7 files changed, 243 insertions(+), 130 deletions(-) create mode 100644 mauro-api/docker/all/micronaut/micronaut-config.sh diff --git a/mauro-api/docker/all/micronaut/micronaut-config.sh b/mauro-api/docker/all/micronaut/micronaut-config.sh new file mode 100644 index 000000000..d3977f765 --- /dev/null +++ b/mauro-api/docker/all/micronaut/micronaut-config.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -e + +if [ -e /opt/init/micronaut ]; +then + mkdir -p /home/app/plugins + pushd /opt/init/micronaut + + shopt -s nullglob + for f in * + do + case "${f}" in + *.sh) + echo "Running ${f}" + if [ -x "${f}" ]; + then + /bin/bash "${f}" + else + . "${f}" + fi + ;; + *.jar) + echo "Adding ${f} as plugin" + cp -pf ${f} /home/app/plugins/. + ;; + *) + echo "Copying ${f} to micronaut resources" + cp "${f}" /home/app/resources/. + ;; + esac + done + shopt -u nullglob + popd +else + echo "No /opt/init/micronaut for *.sh *.yml *.xml *.properties etc - skipping" +fi diff --git a/mauro-api/docker/all/micronaut/micronaut-startup.sh b/mauro-api/docker/all/micronaut/micronaut-startup.sh index 562b42cd4..9fa440ada 100644 --- a/mauro-api/docker/all/micronaut/micronaut-startup.sh +++ b/mauro-api/docker/all/micronaut/micronaut-startup.sh @@ -1,42 +1,10 @@ #!/usr/bin/env bash set -e -if [ -e /opt/init/micronaut ]; -then - mkdir -p /home/app/plugins - pushd /opt/init/micronaut - - shopt -s nullglob - for f in * - do - case "${f}" in - *.sh) - echo "Running ${f}" - if [ -x "${f}" ]; - then - /bin/bash "${f}" - else - . "${f}" - fi - ;; - *.jar) - echo "Adding ${f} as plugin" - cp -pf ${f} /home/app/plugins/. - ;; - *) - echo "Copying ${f} to micronaut resources" - cp "${f}" /home/app/resources/. - ;; - esac - done - shopt -u nullglob - popd -else - echo "No /opt/init/micronaut for *.sh *.yml *.xml *.properties etc - skipping" -fi - # Figure out the java options +if [ "${PG_SHARING_HOST}" == "true" ]; +then declare -A java_opts=( [4]="-server -Xms614M -Xmx2457M -XX:MaxNewSize=1126M -XX:NewSize=204M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=784M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=240M" [8]="-server -Xms1843M -Xmx7372M -XX:MaxNewSize=3379M -XX:NewSize=614M -XX:MetaspaceSize=768M -XX:MaxMetaspaceSize=2764M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=307M" @@ -49,6 +17,20 @@ declare -A java_opts=( [96]="-server -Xms28876M -Xmx115507M -XX:MaxNewSize=52940M -XX:NewSize=9625M -XX:MetaspaceSize=12032M -XX:MaxMetaspaceSize=43315M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=4812M" [128]="server -Xms38707M -Xmx154828M -XX:MaxNewSize=70963M -XX:NewSize=12902M -XX:MetaspaceSize=16128M -XX:MaxMetaspaceSize=58060M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=6451M" ) +else + declare -A java_opts=( + [2]="-server -Xms614M -Xmx2457M -XX:MaxNewSize=1126M -XX:NewSize=204M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=784M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=240M" + [4]="-server -Xms1843M -Xmx7372M -XX:MaxNewSize=3379M -XX:NewSize=614M -XX:MetaspaceSize=768M -XX:MaxMetaspaceSize=2764M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=307M" + [6]="-server -Xms3G -Xmx12G -XX:MaxNewSize=5632M -XX:NewSize=1G -XX:MetaspaceSize=1280M -XX:MaxMetaspaceSize=4608M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=512M" + [8]="-server -Xms4300M -Xmx17203M -XX:MaxNewSize=7884M -XX:NewSize=1433M -XX:MetaspaceSize=1792M -XX:MaxMetaspaceSize=6451M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=716M" + [12]="-server -Xms6758M -Xmx27033M -XX:MaxNewSize=12390M -XX:NewSize=2252M -XX:MetaspaceSize=2816M -XX:MaxMetaspaceSize=10137M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=1126M" + [16]="-server -Xms9G -Xmx36G -XX:MaxNewSize=16896M -XX:NewSize=3G -XX:MetaspaceSize=3840M -XX:MaxMetaspaceSize=13824M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=1536M" + [24]="-server -Xms14131M -Xmx56524M -XX:MaxNewSize=25907M -XX:NewSize=4710M -XX:MetaspaceSize=5888M -XX:MaxMetaspaceSize=21196M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=2355M" + [32]="-server -Xms19046M -Xmx76185M -XX:MaxNewSize=34918M -XX:NewSize=6348M -XX:MetaspaceSize=7936M -XX:MaxMetaspaceSize=28569M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=3174M" + [48]="-server -Xms28876M -Xmx115507M -XX:MaxNewSize=52940M -XX:NewSize=9625M -XX:MetaspaceSize=12032M -XX:MaxMetaspaceSize=43315M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=4812M" + [64]="server -Xms38707M -Xmx154828M -XX:MaxNewSize=70963M -XX:NewSize=12902M -XX:MetaspaceSize=16128M -XX:MaxMetaspaceSize=58060M -XX:NewRatio=2 -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:+UseParallelGC -XX:+AggressiveHeap -XX:GCTimeRatio=19 -XX:MaxGCPauseMillis=3500 -XX:InitialCodeCacheSize=48M -XX:ReservedCodeCacheSize=6451M" + ) +fi chosen_opts="" best_key=0 diff --git a/mauro-api/docker/all/postgres/micronaut-config-for-postgres.sh b/mauro-api/docker/all/postgres/micronaut-config-for-postgres.sh index cdbae4111..59cd5f5e9 100644 --- a/mauro-api/docker/all/postgres/micronaut-config-for-postgres.sh +++ b/mauro-api/docker/all/postgres/micronaut-config-for-postgres.sh @@ -45,7 +45,8 @@ function yaml_val { } }' } - +export PG_RUNNING_INTERNALLY="true" +export PG_SHARING_HOST="true" if [ -e /home/app/resources ]; then if [[ -v DATABASE_NAME ]]; @@ -59,6 +60,7 @@ if [ -e /home/app/resources ]; if [ -e "/home/app/resources/application-datasources.yml" ]; then + echo "Reading application-datasources.yml" datasources_default_url=$(yaml_val "/home/app/resources/application-datasources.yml" 'datasources_default_url') datasources_default_username=$(yaml_val "/home/app/resources/application-datasources.yml" 'datasources_default_username') datasources_default_password=$(yaml_val "/home/app/resources/application-datasources.yml" 'datasources_default_password') @@ -74,6 +76,7 @@ if [ -e /home/app/resources ]; if [ "${datasources_default_url}" == "" ]; then datasources_default_url="jdbc:postgresql://localhost:5432/sandbox" + echo "Setting default jdbc url: ${datasources_default_url}" fi if [ "${datasources_default_username}" == "" ]; @@ -93,6 +96,42 @@ if [ -e /home/app/resources ]; db="${db%%\?*}" export DATABASE_NAME="${db}" + + URL_NO_PREFIX="${datasources_default_url#jdbc:postgresql://}" + HOSTPORT="${URL_NO_PREFIX%%/*}" + export POSTGRES_HOST="${HOSTPORT%%:*}" + + export POSTGRES_PORT="${HOSTPORT##*:}" + + if [ "$POSTGRES_PORT" = "$HOSTPORT" ]; then + export POSTGRES_PORT=5432 + fi + + export PG_RUNNING_INTERNALLY="false" + + for addr in ${DOCKER_LOCAL_ADDRESSES} + do + case "$POSTGRES_HOST" in + $addr) + export PG_RUNNING_INTERNALLY="true" + break + ;; + esac + done + + export PG_SHARING_HOST="false" + for addr in ${DOCKER_BRIDGE_ADDRESSES} + do + case "$POSTGRES_HOST" in + $addr) + export PG_SHARING_HOST="true" + break + ;; + esac + done + + echo "PG_SHARING_HOST: ${PG_SHARING_HOST}" + fi else echo "Missing resource files" diff --git a/mauro-api/docker/all/postgres/postgres-shutdown.sh b/mauro-api/docker/all/postgres/postgres-shutdown.sh index 2375d42af..a16d9a661 100644 --- a/mauro-api/docker/all/postgres/postgres-shutdown.sh +++ b/mauro-api/docker/all/postgres/postgres-shutdown.sh @@ -1,10 +1,13 @@ #!/usr/bin/env bash set -e -if [ -s "${DATABASE_DIRECTORY}/PG_VERSION" ]; -then - PG_BIN="$(find /usr/lib/postgresql -name 'bin')" - export PATH="${PG_BIN}:${PATH}" - echo "Shutting down Postgres..." - pg_ctl -D "${DATABASE_DIRECTORY}" stop -m fast -w +if [ "${PG_RUNNING_INTERNALLY}" != "false" ]; + then + if [ -s "${DATABASE_DIRECTORY}/PG_VERSION" ]; + then + PG_BIN="$(find /usr/lib/postgresql -name 'bin')" + export PATH="${PG_BIN}:${PATH}" + echo "Shutting down internal Postgres..." + pg_ctl -D "${DATABASE_DIRECTORY}" stop -m fast -w + fi fi diff --git a/mauro-api/docker/all/postgres/postgres-startup.sh b/mauro-api/docker/all/postgres/postgres-startup.sh index 53a166e31..8980030fd 100644 --- a/mauro-api/docker/all/postgres/postgres-startup.sh +++ b/mauro-api/docker/all/postgres/postgres-startup.sh @@ -1,121 +1,165 @@ #!/usr/bin/env bash set -e -# Start Postgres in background -echo "Starting Postgres... from ${DATABASE_DIRECTORY}" -PG_BIN="$(find /usr/lib/postgresql -name 'bin')" -export PATH="${PG_BIN}:${PATH}" +echo "Postgres connection is to:" +echo " host: $POSTGRES_HOST" +echo " port: $POSTGRES_PORT" +echo " database: $DATABASE_NAME" +echo " user: $DATABASE_USERNAME" -if [ ! -s "${DATABASE_DIRECTORY}/PG_VERSION" ]; +if [ "${PG_RUNNING_INTERNALLY}" != "false" ]; then - echo "Initializing Postgres database..." - initdb -D "${DATABASE_DIRECTORY}" + # Start Postgres in background + echo "Starting internal Postgres... from ${DATABASE_DIRECTORY}" + PG_BIN="$(find /usr/lib/postgresql -name 'bin')" + export PATH="${PG_BIN}:${PATH}" - # Start up and create the default database + if [ ! -s "${DATABASE_DIRECTORY}/PG_VERSION" ]; + then + echo "Initializing Postgres database..." + initdb -D "${DATABASE_DIRECTORY}" + + # Start up and create the default database - pg_ctl -D "${DATABASE_DIRECTORY}" -l "${DATABASE_LOGS_DIRECTORY}/logfile" -o "-c listen_addresses='*'" -w start + pg_ctl -D "${DATABASE_DIRECTORY}" -l "${DATABASE_LOGS_DIRECTORY}/logfile" -o "-c listen_addresses='*'" -w start - # create user and database - psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL - CREATE USER $DATABASE_USERNAME with SUPERUSER PASSWORD '$DATABASE_PASSWORD'; - CREATE DATABASE ${DATABASE_NAME} OWNER $DATABASE_USERNAME; + # create user and database + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE USER $DATABASE_USERNAME with SUPERUSER PASSWORD '$DATABASE_PASSWORD'; + CREATE DATABASE ${DATABASE_NAME} OWNER $DATABASE_USERNAME; EOSQL - if [ -e /opt/init/postgres ]; - then - pushd /opt/init/postgres - - shopt -s nullglob - for f in * - do - case "${f}" in - *.sh) - echo "Running ${f}" - if [ -x "${f}" ]; - then - /bin/bash "${f}" - else - . "${f}" - fi - ;; - *.sql) - echo "Running ${f}" - psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "${f}" - ;; - esac - done - shopt -u nullglob - popd - else - echo "No /opt/init/postgres *.sh *.sql - skipping" - fi + if [ -e /opt/init/postgres ]; + then + pushd /opt/init/postgres + + shopt -s nullglob + for f in * + do + case "${f}" in + *.sh) + echo "Running ${f}" + if [ -x "${f}" ]; + then + /bin/bash "${f}" + else + . "${f}" + fi + ;; + *.sql) + echo "Running ${f}" + psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f "${f}" + ;; + esac + done + shopt -u nullglob + popd + else + echo "No /opt/init/postgres *.sh *.sql - skipping" + fi - pg_ctl -D ${DATABASE_DIRECTORY} -w stop -fi + pg_ctl -D ${DATABASE_DIRECTORY} -w stop + fi -# Write some defaults + # Write some defaults - usable_gb=$(( MEMORY_AVAILABLE_GB - 2 )) - if (( usable_gb < 1 )); then - usable_gb=1 - fi + usable_gb=$(( MEMORY_AVAILABLE_GB - 2 )) + if (( usable_gb < 1 )); then + usable_gb=1 + fi - pg_gb=$(( usable_gb / 2 )) - if (( pg_gb < 1 )); then - pg_gb=1 - fi + pg_gb=$(( usable_gb / 2 )) + if (( pg_gb < 1 )); then + pg_gb=1 + fi - pg_mb=$(( pg_gb * 1024 )) + pg_mb=$(( pg_gb * 1024 )) - max_worker_processes=$(( CPU_COUNT )) - parallel_workers=$(( max_worker_processes / 2 )) + max_worker_processes=$(( CPU_COUNT )) + parallel_workers=$(( max_worker_processes / 2 )) - work_mem=$(( pg_mb / 160 )) - maintenance_work_mem=$(( work_mem * max_worker_processes * 2 )) + work_mem=$(( pg_mb / 160 )) + maintenance_work_mem=$(( work_mem * max_worker_processes * 2 )) - shared_buffers=$(( pg_mb / 4 )) - effective_cache_size=$(( MEMORY_AVAILABLE_GB * 1024 / 2 )) + shared_buffers=$(( pg_mb / 4 )) + effective_cache_size=$(( MEMORY_AVAILABLE_GB * 1024 / 2 )) - remaining_mem=$(( pg_mb - shared_buffers )) - work_mem_three=$(( 3 * work_mem )) - max_connections=$(( 4 + ( remaining_mem / work_mem_three) - max_worker_processes )) + remaining_mem=$(( pg_mb - shared_buffers )) + work_mem_three=$(( 3 * work_mem )) + max_connections=$(( 4 + ( remaining_mem / work_mem_three) - max_worker_processes )) - cat < "${DATABASE_DIRECTORY}/postgresql.auto.conf" -# Auto-tuned settings -seq_page_cost = 1.0 -random_page_cost = 1.1 -huge_pages = try -wal_buffers = 16MB -min_wal_size = 4GB -max_wal_size = 16GB + cat < "${DATABASE_DIRECTORY}/postgresql.auto.conf" + # Auto-tuned settings + seq_page_cost = 1.0 + random_page_cost = 1.1 + huge_pages = try + wal_buffers = 16MB + min_wal_size = 4GB + max_wal_size = 16GB -shared_buffers = ${shared_buffers}MB -effective_cache_size = ${effective_cache_size}MB -maintenance_work_mem = ${maintenance_work_mem}MB -work_mem = ${work_mem}MB + shared_buffers = ${shared_buffers}MB + effective_cache_size = ${effective_cache_size}MB + maintenance_work_mem = ${maintenance_work_mem}MB + work_mem = ${work_mem}MB -max_worker_processes = ${max_worker_processes} -max_parallel_workers = ${max_worker_processes} -max_parallel_workers_per_gather = ${parallel_workers} -max_parallel_maintenance_workers = ${parallel_workers} + max_worker_processes = ${max_worker_processes} + max_parallel_workers = ${max_worker_processes} + max_parallel_workers_per_gather = ${parallel_workers} + max_parallel_maintenance_workers = ${parallel_workers} -max_connections = ${max_connections} + max_connections = ${max_connections} EOF -chown postgres:postgres "${DATABASE_DIRECTORY}/postgresql.auto.conf" + chown postgres:postgres "${DATABASE_DIRECTORY}/postgresql.auto.conf" -# Check that the docker container has access + # Check that the docker container has access -if [ -e "${DATABASE_DIRECTORY}/pg_hba.conf" ]; -then - ALLOWED=$(grep "${DOCKER_SUBNET}" "${DATABASE_DIRECTORY}/pg_hba.conf" || true) + if [ -e "${DATABASE_DIRECTORY}/pg_hba.conf" ]; + then + ALLOWED=$(grep "${DOCKER_SUBNET}" "${DATABASE_DIRECTORY}/pg_hba.conf" || true) + + if [ "${ALLOWED}" == "" ]; + then + echo "Adding Docker ${DOCKER_SUBNET} as a trusted network for postgres" + echo "host ${DATABASE_NAME} ${DATABASE_USERNAME} ${DOCKER_SUBNET} trust" >> "${DATABASE_DIRECTORY}/pg_hba.conf" + fi + fi + + pg_ctl -D "${DATABASE_DIRECTORY}" -l "${DATABASE_LOGS_DIRECTORY}/logfile" -o "-c listen_addresses='*'" -w start - if [ "${ALLOWED}" == "" ]; +else + + echo "Postgres is configured externally. Testing connection..." + + if ! pg_isready -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" > /dev/null 2>&1 ; then - echo "Adding Docker ${DOCKER_SUBNET} as a trusted network for postgres" - echo "host ${DATABASE_NAME} ${DATABASE_USERNAME} ${DOCKER_SUBNET} trust" >> "${DATABASE_DIRECTORY}/pg_hba.conf" + echo "ERROR: Postgres is not reachable" + echo " host: $POSTGRES_HOST" + echo " port: $POSTGRES_PORT" + exit 1 fi -fi -pg_ctl -D "${DATABASE_DIRECTORY}" -l "${DATABASE_LOGS_DIRECTORY}/logfile" -o "-c listen_addresses='*'" -w start + export PGPASSWORD="$DATABASE_PASSWORD" + if ! psql \ + -h "$POSTGRES_HOST" \ + -p "$POSTGRES_PORT" \ + -U "$DATABASE_USERNAME" \ + -d "$DATABASE_NAME" \ + -c "SELECT 1;" \ + > /dev/null 2>&1 + then + unset PGPASSWORD + echo "ERROR: Cannot connect to Postgres database" + echo " host: $POSTGRES_HOST" + echo " port: $POSTGRES_PORT" + echo " database: $DATABASE_NAME" + echo " user: $DATABASE_USERNAME" + exit 1 + fi + + unset PGPASSWORD + + echo "Database connection successful" + +fi diff --git a/mauro-api/docker/all/startup/docker-environment.sh b/mauro-api/docker/all/startup/docker-environment.sh index 90cde41ab..a61db688e 100644 --- a/mauro-api/docker/all/startup/docker-environment.sh +++ b/mauro-api/docker/all/startup/docker-environment.sh @@ -27,3 +27,11 @@ echo "Detected ${CPU_COUNT} cores" export DOCKER_SUBNET="$(ip -o -4 addr show 2>/dev/null | awk '/scope global/ {split($4,a,"/");split(a[1],b,".");printf "%d.%d.%d.0/%s\n",b[1],b[2],b[3],a[2];exit}')" echo "Docker subnet ${DOCKER_SUBNET}" + +export DOCKER_LOCAL_ADDRESSES="localhost ::1 $(ip -o -4 addr show | awk ' {split($4,a,"/"); printf "%s ",a[1]} ')" +export DOCKER_CONTAINER_NETWORK_PREFIX="$(ip -o -4 addr show 2>/dev/null | awk '/scope global/ {split($4,a,"/");split(a[1],b,".");printf "%d.%d.%d.*",b[1],b[2],b[3];exit}')" + +export DOCKER_BRIDGE_ADDRESSES="host.docker.internal ${DOCKER_CONTAINER_NETWORK_PREFIX}" + +echo "Docker internal addresses ${DOCKER_LOCAL_ADDRESSES}" +echo "Docker bridge addresses ${DOCKER_BRIDGE_ADDRESSES}" diff --git a/mauro-api/docker/all/startup/docker-startup.sh b/mauro-api/docker/all/startup/docker-startup.sh index 92378be42..df3c7e7d6 100644 --- a/mauro-api/docker/all/startup/docker-startup.sh +++ b/mauro-api/docker/all/startup/docker-startup.sh @@ -35,6 +35,7 @@ cleanup() } source "$(which docker-environment.sh)" +source "$(which micronaut-config.sh)" source "$(which micronaut-config-for-postgres.sh)" gosu postgres postgres-startup.sh trap cleanup SIGTERM SIGINT