Dockerfile 862 B

123456789101112131415161718192021222324252627282930313233343536
  1. FROM node:22-trixie as builder
  2. RUN apt-get update && \
  3. DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends git curl jq && \
  4. apt-get clean && \
  5. rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
  6. # 复制项目配置文件
  7. COPY ui/package.json ./ui/package.json
  8. COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
  9. COPY scripts ./scripts
  10. COPY patches ./patches
  11. # 安装项目依赖
  12. RUN pnpm install --frozen-lockfile
  13. # 复制所有源码
  14. COPY . .
  15. # 构建项目
  16. RUN OPENCLAW_A2UI_SKIP_MISSING=1 pnpm build
  17. ENV OPENCLAW_PREFER_PNPM=1
  18. RUN pnpm ui:build
  19. # 生产环境镜像
  20. FROM node:22-trixie-slim
  21. WORKDIR /app
  22. COPY --from=builder /app /app
  23. ENV NODE_ENV=production
  24. RUN chown -R root:root /app
  25. RUN rm -rf /app/extensions/feishu
  26. EXPOSE 18789
  27. USER root
  28. # VOLUME [ "/data" ]
  29. CMD ["node", "dist/index.js", "gateway"]