File size: 2,310 Bytes
89d226e 73ef895 89d226e 73ef895 89d226e a0f823c 89d226e 73ef895 89d226e 2af8a49 c37c186 4ee7a5e 89d226e 73ef895 89d226e e793d5e 8d24432 d0a6395 8d24432 f1fb0ec e8b6073 f1fb0ec d0a6395 219b572 89d226e 0a53576 d0a6395 1e8fef7 0a53576 89d226e 4dddbea 9bedf7d 862edcf a3cab57 cfaf006 3a39604 cfaf006 862edcf 3a39604 862edcf 0e9d3a7 b80cf9e 9f95f6c 6a4d949 9f95f6c 89d226e f1fb0ec 219b572 f1fb0ec 9f95f6c 89d226e e793d5e a8a758b 89d226e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
FROM node:22-slim
# Install system dependencies
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
# Install OpenClaw globally
RUN npm install -g openclaw@latest
# Create config directory
RUN mkdir -p /root/.openclaw
# Set up environment for Hugging Face Spaces
ENV PORT=7860
ENV OPENCLAW_GATEWAY_MODE=local
ENV OPENCLAW_GATEWAY_PASSWORD=${SETUP_PASSWORD}
# Expose the port (Hugging Face default)
EXPOSE 7860
# Create a startup script that generates config and starts OpenClaw
RUN echo '#!/bin/bash\n\
set -x\n\
\n\
# Check for required environment variables\n\
if [ -z "$GEMINI_API_KEY_1" ]; then\n\
echo "ERROR: GEMINI_API_KEY_1 is not set. Agent will fail. Exiting."\n\
exit 1\n\
fi\n\
\n\
# Create critical missing directories\n\
mkdir -p /root/.openclaw/agents/main/agent\n\
mkdir -p /root/.openclaw/agents/main/sessions\n\
mkdir -p /root/.openclaw/credentials\n\
\n\
# Remove auth-profiles.json if it exists to force env var usage\n\
rm -f /root/.openclaw/agents/main/agent/auth-profiles.json\n\
\n\
# Generate minimal config if not exists\n\
if [ ! -f /root/.openclaw/openclaw.json ]; then\n\
cat > /root/.openclaw/openclaw.json << EOF\n\
{\n\
"env": {\n\
"GOOGLE_API_KEY": "${GEMINI_API_KEY_1}",\n\
"GEMINI_API_KEY": "${GEMINI_API_KEY_1}",\n\
"GOOGLE_GENERATIVE_AI_API_KEY": "${GEMINI_API_KEY_1}",\n\
"PALM_API_KEY": "${GEMINI_API_KEY_1}"\n\
},\n\
"gateway": {\n\
"mode": "local",\n\
"bind": "lan",\n\
"port": 7860,\n\
"trustedProxies": ["0.0.0.0/0"],\n\
"auth": {\n\
"mode": "token",\n\
"token": "${SETUP_PASSWORD}"\n\
},\n\
"controlUi": {\n\
"allowInsecureAuth": true\n\
}\n\
},\n\
"agents": {\n\
"defaults": {\n\
"model": {\n\
"primary": "google/gemini-1.5-pro"\n\
}\n\
}\n\
}\n\
}\n\
EOF\n\
fi\n\
\n\
# Fix permissions\n\
chmod 700 /root/.openclaw\n\
chmod 600 /root/.openclaw/openclaw.json\n\
chmod 600 /root/.openclaw/agents/main/agent/auth-profiles.json\n\
\n\
# Fix config if needed\n\
openclaw doctor --fix\n\
\n\
# Start OpenClaw gateway\n\
echo "Starting OpenClaw gateway on port 7860..."\n\
exec openclaw gateway run --port 7860\n\
' > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw
CMD ["/usr/local/bin/start-openclaw"]
|