|
@@ -1,35 +1,34 @@
|
|
|
-# 选择官方 Node 镜像
|
|
|
-FROM node:18
|
|
|
+FROM k6:v1
|
|
|
|
|
|
-# 创建工作目录
|
|
|
+# 创建 k6 用户和用户组(避免与主机用户UID冲突,指定一个高UID)
|
|
|
+#RUN groupadd -g 1001 k6 && \
|
|
|
+# useradd -u 1001 -g k6 -s /bin/bash -m k6
|
|
|
+
|
|
|
+# 创建工作目录并设置权限
|
|
|
WORKDIR /app
|
|
|
+RUN apk add --no-cache nodejs npm && chown -R k6:k6 /app && node -v && npm -v && ln -s /usr/bin/node /usr/local/bin/node && ln -s /usr/bin/npm /usr/local/bin/npm && apk add --no-cache font-noto-cjk && apk add --no-cache ttf-dejavu
|
|
|
|
|
|
-# 复制 package.json 用于安装依赖
|
|
|
+# 复制 package.json 并安装依赖(以 root 身份,因为可能需要安装系统依赖)
|
|
|
COPY server/package*.json ./server/
|
|
|
COPY client/package*.json ./client/
|
|
|
|
|
|
-# 安装依赖
|
|
|
-RUN cd client && npm install && cd ../server && npm install
|
|
|
-
|
|
|
-# 安装 k6
|
|
|
-RUN apt-get update && apt-get install -y gnupg ca-certificates \
|
|
|
- && curl -s https://dl.k6.io/key.gpg | apt-key add - \
|
|
|
- && echo "deb https://dl.k6.io/deb stable main" | tee /etc/apt/sources.list.d/k6.list \
|
|
|
- && apt-get update && apt-get install -y k6
|
|
|
+RUN cd client && npm install && \
|
|
|
+ cd ../server && npm install
|
|
|
|
|
|
-# 构建前端
|
|
|
+# 构建前端(仍以 root 身份,因为可能需要写入系统目录)
|
|
|
COPY client ./client
|
|
|
RUN cd client && npm run build
|
|
|
|
|
|
-# 复制后端代码(确保把 public 打包进去)
|
|
|
COPY server ./server
|
|
|
-
|
|
|
-RUN cp -r client/dist/* server/public/
|
|
|
+RUN cp -r client/dist/* server/public/ && \
|
|
|
+ chown -R k6:k6 /app/server # 确保 server 目录权限正确
|
|
|
|
|
|
WORKDIR /app/server
|
|
|
|
|
|
# 暴露端口
|
|
|
EXPOSE 9001
|
|
|
|
|
|
-# 启动服务
|
|
|
-CMD ["node", "index.js"]
|
|
|
+# 切换到 k6 用户并启动服务
|
|
|
+USER root
|
|
|
+ENTRYPOINT ["/usr/bin/node"]
|
|
|
+CMD ["index.js"]
|