Spaces:
Runtime error
Runtime error
fix: remove chmod /etc/hosts (read-only in build), run DNS sync before app
Browse filesRemoved chmod 666 /etc/hosts from Dockerfile (HF build filesystem is
read-only). Changed DNS resolution from background to blocking so
/tmp/dns-resolved.json and /etc/hosts entries are ready before OpenClaw
starts β needed for undici/fetch which bypasses dns.lookup patching.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dockerfile +0 -1
- scripts/entrypoint.sh +6 -10
Dockerfile
CHANGED
|
@@ -14,7 +14,6 @@ RUN echo "[build][layer1] System deps + tools..." && START=$(date +%s) \
|
|
| 14 |
&& chown node:node /app \
|
| 15 |
&& mkdir -p /home/node/.openclaw/workspace /home/node/.openclaw/credentials \
|
| 16 |
&& chown -R node:node /home/node \
|
| 17 |
-
&& chmod 666 /etc/hosts \
|
| 18 |
&& echo "[build][layer1] System deps + tools: $(($(date +%s) - START))s"
|
| 19 |
|
| 20 |
# ββ εζ’ε° node η¨ζ·οΌεη»ζζζδ½ι½δ»₯ node θΊ«δ»½οΌζ ι chownοΌβββββββββββββββ
|
|
|
|
| 14 |
&& chown node:node /app \
|
| 15 |
&& mkdir -p /home/node/.openclaw/workspace /home/node/.openclaw/credentials \
|
| 16 |
&& chown -R node:node /home/node \
|
|
|
|
| 17 |
&& echo "[build][layer1] System deps + tools: $(($(date +%s) - START))s"
|
| 18 |
|
| 19 |
# ββ εζ’ε° node η¨ζ·οΌεη»ζζζδ½ι½δ»₯ node θΊ«δ»½οΌζ ι chownοΌβββββββββββββββ
|
scripts/entrypoint.sh
CHANGED
|
@@ -6,15 +6,12 @@ BOOT_START=$(date +%s)
|
|
| 6 |
echo "[entrypoint] OpenClaw HuggingFace Spaces Entrypoint"
|
| 7 |
echo "[entrypoint] ======================================="
|
| 8 |
|
| 9 |
-
# ββ DNS pre-resolution (
|
| 10 |
-
echo "[entrypoint] Resolving WhatsApp & Telegram domains via DNS-over-HTTPS
|
| 11 |
DNS_START=$(date +%s)
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
echo "[TIMER] DNS pre-resolve (background): $((DNS_END - DNS_START))s"
|
| 16 |
-
) &
|
| 17 |
-
DNS_PID=$!
|
| 18 |
|
| 19 |
# ββ Node.js memory limit (only if explicitly set) βββββββββββββββββββββββββ
|
| 20 |
if [ -n "$NODE_MEMORY_LIMIT" ]; then
|
|
@@ -60,7 +57,6 @@ if [ -f /app/openclaw/.version ]; then
|
|
| 60 |
echo "[entrypoint] OpenClaw version: $OPENCLAW_VERSION"
|
| 61 |
fi
|
| 62 |
|
| 63 |
-
# ββ Start OpenClaw via sync_hf.py
|
| 64 |
echo "[entrypoint] Starting OpenClaw via sync_hf.py..."
|
| 65 |
-
echo "[entrypoint] DNS resolution running in background (PID $DNS_PID), app will use it when ready"
|
| 66 |
exec python3 -u /home/node/scripts/sync_hf.py
|
|
|
|
| 6 |
echo "[entrypoint] OpenClaw HuggingFace Spaces Entrypoint"
|
| 7 |
echo "[entrypoint] ======================================="
|
| 8 |
|
| 9 |
+
# ββ DNS pre-resolution (BLOCKING β needed before app starts) ββββββββββββββ
|
| 10 |
+
echo "[entrypoint] Resolving WhatsApp & Telegram domains via DNS-over-HTTPS..."
|
| 11 |
DNS_START=$(date +%s)
|
| 12 |
+
python3 /home/node/scripts/dns-resolve.py /tmp/dns-resolved.json 2>&1
|
| 13 |
+
DNS_END=$(date +%s)
|
| 14 |
+
echo "[TIMER] DNS pre-resolve: $((DNS_END - DNS_START))s"
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
# ββ Node.js memory limit (only if explicitly set) βββββββββββββββββββββββββ
|
| 17 |
if [ -n "$NODE_MEMORY_LIMIT" ]; then
|
|
|
|
| 57 |
echo "[entrypoint] OpenClaw version: $OPENCLAW_VERSION"
|
| 58 |
fi
|
| 59 |
|
| 60 |
+
# ββ Start OpenClaw via sync_hf.py βββββββββββββββββββββββββββββββββββββββββ
|
| 61 |
echo "[entrypoint] Starting OpenClaw via sync_hf.py..."
|
|
|
|
| 62 |
exec python3 -u /home/node/scripts/sync_hf.py
|