From 94db6aa51d2196417f5d0cba6deb73fd59dc07b0 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sat, 23 Aug 2025 01:59:57 +0500 Subject: [PATCH] Add jq to Docker image and improve UNIT_SOURCE handling - Include jq in the Docker image for JSON processing. - Refactor UNIT_SOURCE logic to cleanly update configuration using jq. - Remove obsolete UNIT_SOURCE handling code. --- app/docker/Dockerfile | 2 +- app/docker/docker-entrypoint_dev.sh | 20 ++++++++++++++------ app/docker/docker-entrypoint_prod.sh | 20 ++++++++++++++------ docker-compose-prod.yml | 2 +- docker-compose-prod_docker-hub.yml | 2 +- docker-compose.yml | 4 +++- 6 files changed, 34 insertions(+), 16 deletions(-) diff --git a/app/docker/Dockerfile b/app/docker/Dockerfile index 8584616..fd1d63f 100644 --- a/app/docker/Dockerfile +++ b/app/docker/Dockerfile @@ -19,7 +19,7 @@ COPY --from=unit_builder /var/lib/unit/ /var/lib/unit/ COPY docker/unit-config.json /docker-entrypoint.d/config.json -RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip \ +RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip jq \ && apk add --no-cache --virtual .phpize-deps icu-dev libpng-dev bzip2-dev libwebp-dev libjpeg-turbo-dev freetype-dev oniguruma-dev libzip-dev pcre2-dev ${PHPIZE_DEPS} \ && docker-php-ext-configure intl --enable-intl && \ docker-php-ext-configure bcmath --enable-bcmath && \ diff --git a/app/docker/docker-entrypoint_dev.sh b/app/docker/docker-entrypoint_dev.sh index c447b67..9fc4564 100644 --- a/app/docker/docker-entrypoint_dev.sh +++ b/app/docker/docker-entrypoint_dev.sh @@ -42,6 +42,20 @@ if [ "$role" = "app" ]; then if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then echo "$0: /docker-entrypoint.d/ is not empty, applying initial configuration..." + if [[ -n "${UNIT_SOURCE:-}" ]]; then + config="/docker-entrypoint.d/config.json" + tmp="$(mktemp)" + jq --arg src "${UNIT_SOURCE}" ' + .listeners["*:9000"].forwarded.source = + ( $src + | split(",") + | map( gsub("^\\s+|\\s+$"; "") ) # trim пробелы + | map( select(. != "") ) # убрать пустые + ) + ' "$config" > "$tmp" + mv "$tmp" "$config" + fi + echo "$0: Looking for certificate bundles in /docker-entrypoint.d/..." for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.pem"); do echo "$0: Uploading certificates bundle: $f" @@ -60,12 +74,6 @@ if [ "$role" = "app" ]; then curl_put $f "config" done - if [ ! -z ${UNIT_SOURCE+x} ] - then - echo $UNIT_SOURCE > /docker-entrypoint.d/unit_source.json - curl_put "/docker-entrypoint.d/unit_source.json" "config/listeners/*:9000/forwarded/source" - fi - echo "$0: Looking for shell scripts in /docker-entrypoint.d/..." for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.sh"); do echo "$0: Launching $f"; diff --git a/app/docker/docker-entrypoint_prod.sh b/app/docker/docker-entrypoint_prod.sh index b066f56..8093a90 100644 --- a/app/docker/docker-entrypoint_prod.sh +++ b/app/docker/docker-entrypoint_prod.sh @@ -42,6 +42,20 @@ if [ "$role" = "app" ]; then if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then echo "$0: /docker-entrypoint.d/ is not empty, applying initial configuration..." + if [[ -n "${UNIT_SOURCE:-}" ]]; then + config="/docker-entrypoint.d/config.json" + tmp="$(mktemp)" + jq --arg src "${UNIT_SOURCE}" ' + .listeners["*:9000"].forwarded.source = + ( $src + | split(",") + | map( gsub("^\\s+|\\s+$"; "") ) # trim пробелы + | map( select(. != "") ) # убрать пустые + ) + ' "$config" > "$tmp" + mv "$tmp" "$config" + fi + echo "$0: Looking for certificate bundles in /docker-entrypoint.d/..." for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.pem"); do echo "$0: Uploading certificates bundle: $f" @@ -60,12 +74,6 @@ if [ "$role" = "app" ]; then curl_put $f "config" done - if [ ! -z ${UNIT_SOURCE+x} ] - then - echo $UNIT_SOURCE > /docker-entrypoint.d/unit_source.json - curl_put "/docker-entrypoint.d/unit_source.json" "config/listeners/*:9000/forwarded/source" - fi - echo "$0: Looking for shell scripts in /docker-entrypoint.d/..." for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.sh"); do echo "$0: Launching $f"; diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index 6772c61..e17e0bf 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -16,7 +16,7 @@ services: - ./app/application:/var/www/html environment: CONTAINER_ROLE: app - UNIT_SOURCE: '"172.16.0.0/12"' + UNIT_SOURCE: "172.16.0.0/12" queue: build: diff --git a/docker-compose-prod_docker-hub.yml b/docker-compose-prod_docker-hub.yml index 76f130d..d161692 100644 --- a/docker-compose-prod_docker-hub.yml +++ b/docker-compose-prod_docker-hub.yml @@ -13,7 +13,7 @@ services: env_file: app/.env environment: CONTAINER_ROLE: app - UNIT_SOURCE: '"172.16.0.0/12"' + UNIT_SOURCE: "172.16.0.0/12" volumes: - ./app/storage/app:/var/www/html/storage/app - ./app/storage/logs:/var/www/html/storage/logs diff --git a/docker-compose.yml b/docker-compose.yml index 16feedf..570c3f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.7' +#version: '3.7' services: app: build: @@ -13,6 +13,8 @@ services: - ${DOCKER_APP_PORT}:9000 volumes: - ./app/application:/var/www/html + environment: + CONTAINER_ROLE: app queue: build: