From edf9c7ee25c2278692880a7c4909591d4fcfa62c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 19 Jul 2026 16:03:48 +0000 Subject: [PATCH] Fix Docker build failure: copy vendor's scripts/ directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Dockerfile COPYs scripts/vpn-diagnostics.sh and scripts/dns-whitelist.sh into the image, but the vendor-file-copying step in both asterisk.sh and asterisk-do.sh never copied (or downloaded, in the GitHub-fallback branch) that scripts/ directory — only Dockerfile, entrypoint.sh, coturn-entrypoint.sh, and the management script. Every real install hit "docker compose up -d --build" failing with: failed to compute cache key: ... "/scripts/dns-whitelist.sh": not found Confirmed live on a deployed droplet. vendor/easy-asterisk/scripts/ already has both files — this was purely a missed copy step, not a vendoring gap. Fixed in both files identically (mkdir scripts/, copy or curl both scripts, chmod +x alongside the existing executables). Verified at the filesystem level: after a full install run, both files land in the build context with correct executable permissions, resolving the exact COPY instructions that were failing. Full docker build verification wasn't possible in this sandbox (a separate, unrelated network restriction blocks pulling the ubuntu:24.04 base image here), but the missing-file root cause is directly fixed. --- services/asterisk-do.sh | 9 ++++++++- services/asterisk.sh | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/services/asterisk-do.sh b/services/asterisk-do.sh index 6c32088..d4e2af8 100755 --- a/services/asterisk-do.sh +++ b/services/asterisk-do.sh @@ -341,6 +341,8 @@ install_asterisk-do() { _SELF_DIR_LOCAL="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" local VENDOR_DIR="$_SELF_DIR_LOCAL/../vendor/easy-asterisk" + mkdir -p scripts + if [[ -d "$VENDOR_DIR" ]]; then log_info "Copying vendor files from $VENDOR_DIR ..." cp "$VENDOR_DIR/Dockerfile" ./Dockerfile @@ -348,6 +350,8 @@ install_asterisk-do() { cp "$VENDOR_DIR/docker/coturn-entrypoint.sh" ./docker/coturn-entrypoint.sh cp "$VENDOR_DIR/easy-asterisk-v0.10.0.sh" ./easy-asterisk.sh cp "$VENDOR_DIR/easy-asterisk-v0.10.0.sh" ./easy-asterisk-v0.10.0.sh + cp "$VENDOR_DIR/scripts/vpn-diagnostics.sh" ./scripts/vpn-diagnostics.sh + cp "$VENDOR_DIR/scripts/dns-whitelist.sh" ./scripts/dns-whitelist.sh else log_info "Vendor directory not found — downloading from GitHub ..." local GH_RAW="https://raw.githubusercontent.com/DeadDork/easy-asterisk/main" @@ -355,11 +359,14 @@ install_asterisk-do() { curl -fsSL "$GH_RAW/docker/entrypoint.sh" -o ./docker/entrypoint.sh curl -fsSL "$GH_RAW/docker/coturn-entrypoint.sh" -o ./docker/coturn-entrypoint.sh curl -fsSL "$GH_RAW/easy-asterisk-v0.10.0.sh" -o ./easy-asterisk.sh + curl -fsSL "$GH_RAW/scripts/vpn-diagnostics.sh" -o ./scripts/vpn-diagnostics.sh + curl -fsSL "$GH_RAW/scripts/dns-whitelist.sh" -o ./scripts/dns-whitelist.sh cp ./easy-asterisk.sh ./easy-asterisk-v0.10.0.sh fi chmod 755 ./easy-asterisk.sh ./easy-asterisk-v0.10.0.sh \ - ./docker/entrypoint.sh ./docker/coturn-entrypoint.sh + ./docker/entrypoint.sh ./docker/coturn-entrypoint.sh \ + ./scripts/vpn-diagnostics.sh ./scripts/dns-whitelist.sh # ── Persist security-level logging to a file ────────────────────────────── # Vendor's logger.conf only sends the "security" level (auth failures, SIP diff --git a/services/asterisk.sh b/services/asterisk.sh index fd8e64d..d3cc4fb 100644 --- a/services/asterisk.sh +++ b/services/asterisk.sh @@ -221,6 +221,8 @@ install_asterisk() { _SELF_DIR_LOCAL="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" local VENDOR_DIR="$_SELF_DIR_LOCAL/../vendor/easy-asterisk" + mkdir -p scripts + if [[ -d "$VENDOR_DIR" ]]; then log_info "Copying vendor files from $VENDOR_DIR ..." cp "$VENDOR_DIR/Dockerfile" ./Dockerfile @@ -228,6 +230,8 @@ install_asterisk() { cp "$VENDOR_DIR/docker/coturn-entrypoint.sh" ./docker/coturn-entrypoint.sh cp "$VENDOR_DIR/easy-asterisk-v0.10.0.sh" ./easy-asterisk.sh cp "$VENDOR_DIR/easy-asterisk-v0.10.0.sh" ./easy-asterisk-v0.10.0.sh + cp "$VENDOR_DIR/scripts/vpn-diagnostics.sh" ./scripts/vpn-diagnostics.sh + cp "$VENDOR_DIR/scripts/dns-whitelist.sh" ./scripts/dns-whitelist.sh else log_info "Vendor directory not found — downloading from GitHub ..." local GH_RAW="https://raw.githubusercontent.com/DeadDork/easy-asterisk/main" @@ -235,11 +239,14 @@ install_asterisk() { curl -fsSL "$GH_RAW/docker/entrypoint.sh" -o ./docker/entrypoint.sh curl -fsSL "$GH_RAW/docker/coturn-entrypoint.sh" -o ./docker/coturn-entrypoint.sh curl -fsSL "$GH_RAW/easy-asterisk-v0.10.0.sh" -o ./easy-asterisk.sh + curl -fsSL "$GH_RAW/scripts/vpn-diagnostics.sh" -o ./scripts/vpn-diagnostics.sh + curl -fsSL "$GH_RAW/scripts/dns-whitelist.sh" -o ./scripts/dns-whitelist.sh cp ./easy-asterisk.sh ./easy-asterisk-v0.10.0.sh fi chmod 755 ./easy-asterisk.sh ./easy-asterisk-v0.10.0.sh \ - ./docker/entrypoint.sh ./docker/coturn-entrypoint.sh + ./docker/entrypoint.sh ./docker/coturn-entrypoint.sh \ + ./scripts/vpn-diagnostics.sh ./scripts/dns-whitelist.sh # ── Networking mode ─────────────────────────────────────────────────────── echo ""