jun02 commited on
Commit
5679c11
·
verified ·
1 Parent(s): c899b97

Create Dockerfile

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