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 并安装依赖(以 root 身份,因为可能需要安装系统依赖) COPY server/package*.json ./server/ COPY client/package*.json ./client/ RUN cd client && npm install && \ cd ../server && npm install # 构建前端(仍以 root 身份,因为可能需要写入系统目录) COPY client ./client RUN cd client && npm run build COPY server ./server RUN cp -r client/dist/* server/public/ && \ chown -R k6:k6 /app/server # 确保 server 目录权限正确 WORKDIR /app/server # 暴露端口 EXPOSE 9001 # 切换到 k6 用户并启动服务 USER root ENTRYPOINT ["/usr/bin/node"] CMD ["index.js"]