From 1a63fa797b404ae5139d796f285788f8491dd5d1 Mon Sep 17 00:00:00 2001 From: Suchintan Date: Thu, 19 Feb 2026 15:22:04 -0500 Subject: [PATCH] Fix VITE_API_BASE_URL not being used at runtime in Docker (#4810) Co-authored-by: Claude --- Dockerfile.ui | 8 ++++---- entrypoint-skyvernui.sh | 21 ++++++++++++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Dockerfile.ui b/Dockerfile.ui index 40a54771..228bb1b8 100644 --- a/Dockerfile.ui +++ b/Dockerfile.ui @@ -8,10 +8,10 @@ COPY ./skyvern-frontend /app COPY ./entrypoint-skyvernui.sh /app/entrypoint-skyvernui.sh RUN npm install -ENV VITE_API_BASE_URL=http://localhost:8000/api/v1 -ENV VITE_WSS_BASE_URL=ws://localhost:8000/api/v1 -ENV VITE_ARTIFACT_API_BASE_URL=http://localhost:9090 -# Placeholder for runtime injection +# Placeholders for runtime injection (will be replaced by entrypoint script) +ENV VITE_API_BASE_URL=__VITE_API_BASE_URL_PLACEHOLDER__ +ENV VITE_WSS_BASE_URL=__VITE_WSS_BASE_URL_PLACEHOLDER__ +ENV VITE_ARTIFACT_API_BASE_URL=__VITE_ARTIFACT_API_BASE_URL_PLACEHOLDER__ ENV VITE_SKYVERN_API_KEY=__SKYVERN_API_KEY_PLACEHOLDER__ # Build at image time diff --git a/entrypoint-skyvernui.sh b/entrypoint-skyvernui.sh index 46d7b985..33278c1d 100644 --- a/entrypoint-skyvernui.sh +++ b/entrypoint-skyvernui.sh @@ -2,14 +2,25 @@ set -e -# Extract API key from secrets file -VITE_SKYVERN_API_KEY=$(sed -n 's/.*cred\s*=\s*"\([^"]*\)".*/\1/p' .streamlit/secrets.toml 2>/dev/null || echo "") +# Default values for environment variables +VITE_API_BASE_URL="${VITE_API_BASE_URL:-http://localhost:8000/api/v1}" +VITE_WSS_BASE_URL="${VITE_WSS_BASE_URL:-ws://localhost:8000/api/v1}" +VITE_ARTIFACT_API_BASE_URL="${VITE_ARTIFACT_API_BASE_URL:-http://localhost:9090}" -# Inject API key into pre-built JS files (replace placeholder) -if [ -n "$VITE_SKYVERN_API_KEY" ]; then - find /app/dist -name "*.js" -exec sed -i "s/__SKYVERN_API_KEY_PLACEHOLDER__/$VITE_SKYVERN_API_KEY/g" {} \; +# Extract API key from secrets file if not provided via environment +if [ -z "$VITE_SKYVERN_API_KEY" ]; then + VITE_SKYVERN_API_KEY=$(sed -n 's/.*cred\s*=\s*"\([^"]*\)".*/\1/p' .streamlit/secrets.toml 2>/dev/null || echo "") fi +# Inject environment variables into pre-built JS files (replace placeholders) +# Using | as delimiter since URLs contain / +find /app/dist -name "*.js" -exec sed -i \ + -e "s|__VITE_API_BASE_URL_PLACEHOLDER__|${VITE_API_BASE_URL}|g" \ + -e "s|__VITE_WSS_BASE_URL_PLACEHOLDER__|${VITE_WSS_BASE_URL}|g" \ + -e "s|__VITE_ARTIFACT_API_BASE_URL_PLACEHOLDER__|${VITE_ARTIFACT_API_BASE_URL}|g" \ + -e "s|__SKYVERN_API_KEY_PLACEHOLDER__|${VITE_SKYVERN_API_KEY}|g" \ + {} \; + # Start the servers (no rebuild needed) # Tini (configured as ENTRYPOINT) handles signal forwarding and zombie reaping node localServer.js &