소스 검색

feat: add timeout

周玉环 2 주 전
부모
커밋
2d4db82c2a
2개의 변경된 파일18개의 추가작업 그리고 19개의 파일을 삭제
  1. 17 18
      Dockerfile
  2. 1 1
      server/script-browser.js

+ 17 - 18
Dockerfile

@@ -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"]

+ 1 - 1
server/script-browser.js

@@ -29,7 +29,7 @@ export default async function () {
   // targetUrlWithoutProtocol = targetUrlWithoutProtocol.replace('https://', '');
   try {
     await page.goto(targetUrl, {
-      timeout: 120000
+      timeout: 60000
     });
     await page.screenshot({ path: `screenshots/screenshot_${timeStamp}.png` });
   } finally {