Dockerfile 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. FROM k6:v1
  2. # 创建 k6 用户和用户组(避免与主机用户UID冲突,指定一个高UID)
  3. #RUN groupadd -g 1001 k6 && \
  4. # useradd -u 1001 -g k6 -s /bin/bash -m k6
  5. # 创建工作目录并设置权限
  6. WORKDIR /app
  7. 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
  8. # 复制 package.json 并安装依赖(以 root 身份,因为可能需要安装系统依赖)
  9. COPY server/package*.json ./server/
  10. COPY client/package*.json ./client/
  11. RUN cd client && npm install && \
  12. cd ../server && npm install
  13. # 构建前端(仍以 root 身份,因为可能需要写入系统目录)
  14. COPY client ./client
  15. RUN cd client && npm run build
  16. COPY server ./server
  17. RUN cp -r client/dist/* server/public/ && \
  18. chown -R k6:k6 /app/server # 确保 server 目录权限正确
  19. WORKDIR /app/server
  20. # 暴露端口
  21. EXPOSE 9001
  22. # 切换到 k6 用户并启动服务
  23. USER root
  24. ENTRYPOINT ["/usr/bin/node"]
  25. CMD ["index.js"]