更新 Dockerfile

This commit is contained in:
admin 2026-04-16 16:07:11 +08:00
parent 3634713788
commit e6dab8c3dd

View File

@ -2,37 +2,49 @@ FROM dcloud-registry.cn-beijing.cr.aliyuncs.com/dcloud/rdk-claw
USER root
# 安装 tini 进程管理器
RUN curl -fsSL https://github.com/krallin/tini/releases/download/v0.19.0/tini-static -o /home/node/tini && chmod +x /home/node/tini
RUN set -eux; \
if ! getent group 1001 >/dev/null; then groupadd -g 1001 user; fi; \
if ! id -u 1001 >/dev/null 2>&1; then useradd -m -u 1001 -g 1001 -s /bin/bash user; fi
RUN curl -fsSL https://github.com/krallin/tini/releases/download/v0.19.0/tini-static -o /usr/local/bin/tini \
&& chmod +x /usr/local/bin/tini
RUN apt-get update \
&& apt-get install -y --no-install-recommends socat \
&& rm -rf /var/lib/apt/lists/*
# 安装 skillhub
RUN curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash
RUN cp /root/.local/bin/skillhub /usr/local/bin/skillhub && chmod +x /usr/local/bin/skillhub && mkdir -p /workspace/default && chmod 1777 /workspace/default
RUN cp /root/.local/bin/skillhub /usr/local/bin/skillhub \
&& chmod +x /usr/local/bin/skillhub
# 创建 gateway-watchdog.sh 守护脚本
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'' \
'while true; do' \
' echo "Starting gateway..."' \
' openclaw gateway --allow-unconfigured' \
' EXIT_CODE=$?' \
' echo "Gateway exited with code $EXIT_CODE, restarting in 2s..."' \
' sleep 2' \
'done' > /usr/local/bin/gateway-watchdog.sh && chmod +x /usr/local/bin/gateway-watchdog.sh
RUN set -eux; \
mkdir -p /workspace/default /home/user/.openclaw/identity /run/e2b; \
chmod 1777 /workspace/default /run/e2b; \
chown -R 1001:1001 /home/user /workspace/default
RUN ln -sfn /workspace/default/.openclaw /home/user/.openclaw
RUN cat > /usr/local/bin/gateway-watchdog.sh <<'EOF' && chmod +x /usr/local/bin/gateway-watchdog.sh
#!/usr/bin/env bash
set -uo pipefail
while true; do
echo "[watchdog] starting gateway..."
OUTPUT="$(openclaw gateway --allow-unconfigured 2>&1)"
EXIT_CODE=$?
[ -n "$OUTPUT" ] && printf "%s\n" "$OUTPUT"
echo "[watchdog] gateway exited with code ${EXIT_CODE}, restart in 2s"
sleep 2
done
EOF
# 替换 SOUL.md 和 IDENTITY.md
COPY rdk-claw/SOUL.md /app/docs/reference/templates/SOUL.md
COPY rdk-claw/IDENTITY.md /app/docs/reference/templates/IDENTITY.md
# 添加 node-remote-connect skill
COPY rdk-claw/node-remote-connect /app/skills/node-remote-connect
RUN chown -R 1001:1001 /app/skills/node-remote-connect
# 确保权限正确
RUN chown -R node:node /app/skills/node-remote-connect
USER node
ENV HOME=/home/user
USER 1001:1001
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/home/node/tini", "--", "/usr/local/bin/gateway-watchdog.sh"]
CMD ["/usr/local/bin/tini", "--", "/usr/local/bin/gateway-watchdog.sh"]