|
@@ -0,0 +1,36 @@
|
|
|
|
|
+FROM node:22-trixie as builder
|
|
|
|
|
+
|
|
|
|
|
+RUN apt-get update && \
|
|
|
|
|
+ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends git curl jq && \
|
|
|
|
|
+ apt-get clean && \
|
|
|
|
|
+ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
|
|
|
|
|
+
|
|
|
|
|
+# 复制项目配置文件
|
|
|
|
|
+COPY ui/package.json ./ui/package.json
|
|
|
|
|
+COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
|
|
|
|
|
+COPY scripts ./scripts
|
|
|
|
|
+COPY patches ./patches
|
|
|
|
|
+
|
|
|
|
|
+# 安装项目依赖
|
|
|
|
|
+RUN pnpm install --frozen-lockfile
|
|
|
|
|
+
|
|
|
|
|
+# 复制所有源码
|
|
|
|
|
+COPY . .
|
|
|
|
|
+
|
|
|
|
|
+# 构建项目
|
|
|
|
|
+RUN OPENCLAW_A2UI_SKIP_MISSING=1 pnpm build
|
|
|
|
|
+ENV OPENCLAW_PREFER_PNPM=1
|
|
|
|
|
+RUN pnpm ui:build
|
|
|
|
|
+
|
|
|
|
|
+# 生产环境镜像
|
|
|
|
|
+FROM node:22-trixie-slim
|
|
|
|
|
+WORKDIR /app
|
|
|
|
|
+COPY --from=builder /app /app
|
|
|
|
|
+
|
|
|
|
|
+ENV NODE_ENV=production
|
|
|
|
|
+RUN chown -R root:root /app
|
|
|
|
|
+RUN rm -rf /app/extensions/feishu
|
|
|
|
|
+EXPOSE 18789
|
|
|
|
|
+USER root
|
|
|
|
|
+# VOLUME [ "/data" ]
|
|
|
|
|
+CMD ["node", "dist/index.js", "gateway"]
|