lxui commited on
Commit
f15794b
·
verified ·
1 Parent(s): 1e497a9

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +9 -35
Dockerfile CHANGED
@@ -2,7 +2,6 @@ FROM node:20-slim
2
 
3
  WORKDIR /app
4
 
5
- # 安装系统依赖
6
  RUN apt-get update && apt-get install -y \
7
  git \
8
  python3 \
@@ -13,43 +12,25 @@ RUN apt-get update && apt-get install -y \
13
  g++ \
14
  && rm -rf /var/lib/apt/lists/*
15
 
16
- # 安装 OpenClaw 并确保在 PATH 中
17
- RUN npm install -g openclaw \
18
- && npm config get prefix > /tmp/npm_prefix \
19
- && export PATH="$(cat /tmp/npm_prefix)/bin:$PATH" \
20
- && which openclaw
21
 
22
- # 设置全局环境变量(关键!)
23
  ENV NPM_CONFIG_PREFIX=/usr/local
24
- ENV NODE_PATH="/usr/local/lib/node_modules"
25
- ENV PATH="/usr/local/bin:/usr/local/lib/node_modules/.bin:$PATH"
26
 
27
- # 验证 openclaw 可用
28
- RUN which openclaw && openclaw --version
 
29
 
30
- # 克隆 Edict
31
  RUN git clone https://github.com/cft0808/edict.git /app/edict
32
  WORKDIR /app/edict
33
 
34
- # 创建 openclaw.json 并运行 install.sh(使用 bash -c 确保 PATH 生效)
35
- RUN bash -c '\
36
- export PATH="/usr/local/bin:/usr/local/lib/node_modules/.bin:$PATH" && \
37
- which openclaw && \
38
- mkdir -p /root/.config/openclaw && \
39
- echo '"'"'{"defaultAgent":"claude","agents":{"claude":{"provider":"anthropic","model":"claude-3-sonnet-20240229","apiKey":""}}}'"'"' > /root/.config/openclaw/openclaw.json && \
40
  ln -sf /root/.config/openclaw/openclaw.json ./openclaw.json && \
41
- ./install.sh \
42
- '
43
 
44
- # 修改 dashboard/server.py 使用环境变量端口(7891 -> 7860)
45
- RUN sed -i 's/7891/7860/g' dashboard/server.py || true
46
-
47
- # 创建启动脚本
48
  RUN echo '#!/bin/bash\n\
49
- export PATH="/usr/local/bin:/usr/local/lib/node_modules/.bin:$PATH"\n\
50
- export PORT=7860\n\
51
- \n\
52
- # 重新创建配置(支持环境变量注入)\n\
53
  mkdir -p /root/.config/openclaw\n\
54
  cat > /root/.config/openclaw/openclaw.json << EOF\n\
55
  {\n\
@@ -59,21 +40,14 @@ cat > /root/.config/openclaw/openclaw.json << EOF\n\
59
  "provider": "anthropic",\n\
60
  "model": "${CLAUDE_MODEL:-claude-3-sonnet-20240229}",\n\
61
  "apiKey": "${ANTHROPIC_API_KEY:-}"\n\
62
- },\n\
63
- "openai": {\n\
64
- "provider": "openai",\n\
65
- "model": "${OPENAI_MODEL:-gpt-4}",\n\
66
- "apiKey": "${OPENAI_API_KEY:-}"\n\
67
  }\n\
68
  }\n\
69
  }\n\
70
  EOF\n\
71
- \n\
72
  cd /app/edict\n\
73
  bash scripts/run_loop.sh &\n\
74
  python3 dashboard/server.py\n\
75
  ' > /app/start.sh && chmod +x /app/start.sh
76
 
77
  EXPOSE 7891
78
- ENV PORT=7891
79
  CMD ["/app/start.sh"]
 
2
 
3
  WORKDIR /app
4
 
 
5
  RUN apt-get update && apt-get install -y \
6
  git \
7
  python3 \
 
12
  g++ \
13
  && rm -rf /var/lib/apt/lists/*
14
 
15
+ RUN npm install -g openclaw
 
 
 
 
16
 
 
17
  ENV NPM_CONFIG_PREFIX=/usr/local
18
+ ENV PATH="/usr/local/bin:${PATH}"
 
19
 
20
+ RUN ln -sf $(find /usr/local -name "openclaw.js" 2>/dev/null | head -1) /usr/local/bin/openclaw \
21
+ || echo '#!/usr/bin/env node\nrequire("openclaw");' > /usr/local/bin/openclaw \
22
+ && chmod +x /usr/local/bin/openclaw
23
 
 
24
  RUN git clone https://github.com/cft0808/edict.git /app/edict
25
  WORKDIR /app/edict
26
 
27
+ RUN mkdir -p /root/.config/openclaw && \
28
+ echo '{"defaultAgent":"claude","agents":{"claude":{"provider":"anthropic","model":"claude-3-sonnet-20240229","apiKey":""}}}' > /root/.config/openclaw/openclaw.json && \
 
 
 
 
29
  ln -sf /root/.config/openclaw/openclaw.json ./openclaw.json && \
30
+ bash -c 'export PATH="/usr/local/bin:$PATH" && ./install.sh'
 
31
 
 
 
 
 
32
  RUN echo '#!/bin/bash\n\
33
+ export PATH="/usr/local/bin:$PATH"\n\
 
 
 
34
  mkdir -p /root/.config/openclaw\n\
35
  cat > /root/.config/openclaw/openclaw.json << EOF\n\
36
  {\n\
 
40
  "provider": "anthropic",\n\
41
  "model": "${CLAUDE_MODEL:-claude-3-sonnet-20240229}",\n\
42
  "apiKey": "${ANTHROPIC_API_KEY:-}"\n\
 
 
 
 
 
43
  }\n\
44
  }\n\
45
  }\n\
46
  EOF\n\
 
47
  cd /app/edict\n\
48
  bash scripts/run_loop.sh &\n\
49
  python3 dashboard/server.py\n\
50
  ' > /app/start.sh && chmod +x /app/start.sh
51
 
52
  EXPOSE 7891
 
53
  CMD ["/app/start.sh"]