File size: 4,718 Bytes
e32d817 6354206 023735f 6354206 2b7e3c5 524434d f61ac3f 6354206 e32d817 6354206 524434d 6354206 524434d 6354206 e32d817 6354206 2b7e3c5 6354206 98d3a2e 6354206 2b7e3c5 e32d817 2b7e3c5 6354206 c510ad2 6354206 80e516d 2b7e3c5 6354206 8fd2688 c510ad2 8fd2688 6354206 8fd2688 524434d 6354206 023735f 6354206 2b7e3c5 98d3a2e 2b7e3c5 6354206 2b7e3c5 524434d 80e516d 524434d 6354206 e32d817 2b7e3c5 6354206 e32d817 | 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | # ๆ ธๅฟ้ๅ๏ผNode 22 slim
FROM node:22-slim
# 1. ๅฎ่ฃ
็ณป็ปไพ่ต
RUN apt-get update && apt-get install -y --no-install-recommends \
git openssh-client build-essential \
g++ make ca-certificates socat \
chromium fonts-noto-cjk python3 \
&& rm -rf /var/lib/apt/lists/*
# 2. ๆๅปบ็ฏๅขไผๅ
RUN update-ca-certificates && \
git config --global http.sslVerify false && \
git config --global url."https://github.com/".insteadOf ssh://git@github.com/
# 3. ๅ
จๅฑๅฎ่ฃ
OpenClaw ๆๆฐ็
RUN npm install -g openclaw@latest --unsafe-perm
# 4. ็ฏๅขไธๆ้่ฎพ็ฝฎ
ENV PORT=7860 \
HOME=/home/node
RUN mkdir -p /home/node/.openclaw/sessions \
&& mkdir -p /home/node/.openclaw/workspace \
&& mkdir -p /home/node/data \
&& chown -R node:node /home/node
# 5. ๅฎนๅจๅ
ฅๅฃ่ๆฌ
RUN echo "#!/bin/bash\n\
set -e\n\
\n\
if [ -n \"\$HF_TOKEN\" ] && [ -n \"\$DATASET_REPO\" ]; then\n\
echo \"๐ ๅๅงๅ Git ่ชๅจๅคไปฝ...\"\n\
git config --global user.email \"openclaw-bot@huggingface.co\"\n\
git config --global user.name \"OpenClaw Bot\"\n\
cd /home/node/data\n\
if [ ! -d \".git\" ]; then\n\
echo \"๐ฅ ๅ
้ๆฐๆฎ้: \$DATASET_REPO\"\n\
git clone https://user:\$HF_TOKEN@huggingface.co/datasets/\$DATASET_REPO .\n\
else\n\
echo \"๐ฅ ๆๅๆๆฐๆฐๆฎ...\"\n\
git pull origin main\n\
fi\n\
if [ \"\$(ls -A /home/node/data)\" ]; then\n\
echo \"โป๏ธ ๆญฃๅจๆขๅคๅๅฒๆฐๆฎ...\"\n\
cp -r /home/node/data/* /home/node/.openclaw/ 2>/dev/null || true\n\
fi\n\
fi\n\
\n\
# ๐ ๆ ธๅฟ้ฒๅ๏ผๆฏๆฌกๅฏๅจๅ๏ผๆธ
็ไธๆฌกๆต่งๅจๅดฉๆบ็ไธ็ๆญป้ๆไปถ๏ผ\n\
echo \"๐งน ๆญฃๅจๆธ
็ๅฏ่ฝๆฎ็็ๆต่งๅจๆญป้ๆไปถ...\"\n\
find /home/node/.openclaw -name SingletonLock -delete 2>/dev/null || true\n\
\n\
CLEAN_BASE=\$(echo \"\$OPENAI_API_BASE\" | sed \"s|/chat/completions||g\" | sed \"s|/v1/|/v1|g\" | sed \"s|/v1\$|/v1|g\")\n\
\n\
echo \"โ๏ธ ๆญฃๅจ็ๆ OpenClaw ้
็ฝฎๆไปถ...\"\n\
cat > /home/node/.openclaw/openclaw.json <<EOF\n\
{\n\
\"models\": {\n\
\"providers\": {\n\
\"siliconflow\": {\n\
\"baseUrl\": \"\$CLEAN_BASE\",\n\
\"apiKey\": \"\$OPENAI_API_KEY\",\n\
\"api\": \"openai-completions\",\n\
\"models\": [{ \"id\": \"\$MODEL\", \"name\": \"DeepSeek\", \"contextWindow\": 128000 }]\n\
}\n\
}\n\
},\n\
\"agents\": { \"defaults\": { \"model\": { \"primary\": \"siliconflow/\$MODEL\" } } },\n\
\"channels\": {\n\
\"telegram\": {\n\
\"enabled\": true,\n\
\"botToken\": \"\$TELEGRAM_BOT_TOKEN\",\n\
\"dmPolicy\": \"allowlist\",\n\
\"allowFrom\": [\"\$TELEGRAM_ADMIN_ID\"]\n\
}\n\
},\n\
\"browser\": {\n\
\"defaultProfile\": \"openclaw\",\n\
\"headless\": true,\n\
\"noSandbox\": true,\n\
\"executablePath\": \"/usr/bin/chromium\",\n\
\"args\": [\n\
\"--disable-dev-shm-usage\",\n\
\"--disable-gpu\",\n\
\"--disable-software-rasterizer\",\n\
\"--disable-setuid-sandbox\"\n\
]\n\
},\n\
\"gateway\": {\n\
\"mode\": \"local\",\n\
\"bind\": \"loopback\",\n\
\"port\": 25808,\n\
\"trustedProxies\": [\"127.0.0.1/32\", \"0.0.0.0/0\", \"10.0.0.0/8\", \"172.16.0.0/12\", \"192.168.0.0/16\"],\n\
\"auth\": { \"mode\": \"token\", \"token\": \"\$OPENCLAW_GATEWAY_PASSWORD\" },\n\
\"controlUi\": { \n\
\"allowInsecureAuth\": true,\n\
\"dangerouslyDisableDeviceAuth\": true\n\
}\n\
}\n\
}\n\
EOF\n\
\n\
if [ -n \"\$HF_TOKEN\" ] && [ -n \"\$DATASET_REPO\" ]; then\n\
(while true; do \n\
sleep 300;\n\
cp -r /home/node/.openclaw/sessions /home/node/data/ 2>/dev/null || true;\n\
cp -r /home/node/.openclaw/workspace /home/node/data/ 2>/dev/null || true;\n\
rm -rf /home/node/data/workspace/.git 2>/dev/null || true;\n\
cd /home/node/data;\n\
if [[ \$(git status --porcelain) ]]; then\n\
echo \"๐พ [่ชๅจๅๆญฅ] ๅ็ฐๆฐๆฎๅๅจ๏ผๆญฃๅจไธไผ ...\"\n\
git add .;\n\
git commit -m \"Auto sync: \$(date)\";\n\
git push https://user:\$HF_TOKEN@huggingface.co/datasets/\$DATASET_REPO main > /dev/null 2>&1;\n\
fi;\n\
done) &\n\
fi\n\
\n\
cd /home/node/.openclaw\n\
echo \"๐ ๅฏๅจ็ซฏๅฃ่ฝฌๅๅผๆ...\"\n\
socat TCP4-LISTEN:7860,fork,reuseaddr TCP4:127.0.0.1:25808 &\n\
\n\
echo \"๐ ๅฏๅจ OpenClaw Gateway...\"\n\
exec openclaw gateway run --port 25808 --allow-unconfigured\n\
" > /usr/local/bin/start-openclaw && chmod +x /usr/local/bin/start-openclaw
# 6. ๅๆขๅฐๆฎ้็จๆท่ฟ่ก
USER node
WORKDIR /home/node
EXPOSE 7860
CMD ["/usr/local/bin/start-openclaw"] |