From f282585b525fe787ab6bdbd2f83c9c848b376771 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 12 May 2026 16:42:00 +0700 Subject: [PATCH] feat: enhance network configuration handling in updater script - Improved network mode handling by introducing a variable for network names, allowing for better management of custom networks. - Added support for network aliases, enabling the specification of multiple aliases for a given network in the snapshot. - Enhanced health check logging to include the last HTTP status received, providing better visibility into health check failures. --- deploy/updater/entrypoint.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/deploy/updater/entrypoint.sh b/deploy/updater/entrypoint.sh index a413233..8d6108c 100644 --- a/deploy/updater/entrypoint.sh +++ b/deploy/updater/entrypoint.sh @@ -248,19 +248,30 @@ build_run_args_from_snapshot() { ' "$snapshot_file") local network_mode + local network_name="" network_mode="$(jq -r '.HostConfig.NetworkMode // empty' "$snapshot_file")" if [[ "$network_mode" == "host" ]]; then args+=(--network host) elif [[ -n "$network_mode" && "$network_mode" != "default" && "$network_mode" != "bridge" ]]; then - args+=(--network "$network_mode") + network_name="$network_mode" + args+=(--network "$network_name") else - local custom_network - custom_network="$(jq -r '.NetworkSettings.Networks // {} | keys[0] // empty' "$snapshot_file")" - if [[ -n "$custom_network" && "$custom_network" != "bridge" ]]; then - args+=(--network "$custom_network") + network_name="$(jq -r '.NetworkSettings.Networks // {} | keys[0] // empty' "$snapshot_file")" + if [[ -n "$network_name" && "$network_name" != "bridge" ]]; then + args+=(--network "$network_name") fi fi + if [[ -n "$network_name" ]]; then + while IFS= read -r alias; do + [[ -n "$alias" ]] || continue + args+=(--network-alias "$alias") + done < <(jq -r --arg net "$network_name" ' + .NetworkSettings.Networks[$net].Aliases // [] + | .[] + ' "$snapshot_file") + fi + if [[ "$(jq -r '.HostConfig.Privileged // false' "$snapshot_file")" == "true" ]]; then args+=(--privileged) fi @@ -289,11 +300,13 @@ wait_for_health() { local health_url="$3" local expect_status="$4" local deadline=$((SECONDS + HEALTH_TIMEOUT_SECONDS)) + local last_status="" while (( SECONDS < deadline )); do if [[ "$health_type" == "http" ]]; then local status status="$(curl --silent --output /dev/null --write-out '%{http_code}' --max-time 5 "$health_url" || true)" + last_status="$status" if [[ "$status" == "$expect_status" ]]; then log info "target=${target_id} action=health_ok status=${status}" return 0 @@ -305,7 +318,7 @@ wait_for_health() { sleep 2 done - log error "target=${target_id} action=health_fail reason=timeout seconds=${HEALTH_TIMEOUT_SECONDS}" + log error "target=${target_id} action=health_fail reason=timeout seconds=${HEALTH_TIMEOUT_SECONDS} url=${health_url} last_status=${last_status:-none}" return 1 }