Moltbot / Dockerfile
dscdls's picture
Update Dockerfile
8faa2d0 verified
# --- 第一阶段:编译阶段 ---
FROM node:22-slim AS builder
RUN apt-get update && apt-get install -y git python3 make g++ && rm -rf /var/lib/apt/lists/*
WORKDIR /build
RUN git clone https://github.com/moltbot/moltbot.git .
RUN npm install -g pnpm && pnpm install && pnpm run build
# --- 第二阶段:运行阶段 ---
FROM node:22-slim
WORKDIR /app
# 只需要拷贝产物,不需要在这一层安装 pnpm 以减小体积
COPY --from=builder /build/dist ./dist
COPY --from=builder /build/package.json ./package.json
COPY --from=builder /build/node_modules ./node_modules
# 环境变量
ENV NODE_ENV=production
ENV PORT=7860
ENV CONTAINER=true
ENV MOLT_SKIP_SERVICE_CHECK=true
# 很多第三方 API 需要这个来允许跨域或容器通信
ENV HOST=0.0.0.0
EXPOSE 7860
# 使用 --allow-unconfigured 强行启动,并设置模式为 local
# 通过环境变量注入配置,通常这种方式比命令行参数更稳
ENV OPENCLAW_GATEWAY_MODE=local
ENV MOLT_GATEWAY_MODE=local
# 启动命令只保留核心开关
# 在 /app 目录下预创建一个空的或基础的配置文件(假设它寻找的是 .moltrc 或 config.json)
# 尝试直接使用 index.js 启动,并确保它不会因为没有 TTY 而退出
# 删掉报错的 --host,只保留它能识别的 --port 和 --allow-unconfigured
CMD ["node", "dist/index.js", "gateway", "run", "--port", "7860", "--allow-unconfigured"]