StarrySkyWorld commited on
Commit
a4c50e2
·
verified ·
1 Parent(s): 346152a

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +62 -0
Dockerfile ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 设定基础镜像变量
2
+ ARG BASE_IMAGE=louislam/uptime-kuma:base2
3
+
4
+ ############################################
5
+ # 阶段 1: 自动克隆源码
6
+ ############################################
7
+ FROM alpine/git AS fetch-source
8
+ WORKDIR /src
9
+ RUN git clone https://github.com/louislam/uptime-kuma.git .
10
+
11
+ ############################################
12
+ # 阶段 2: 构建 Go 健康检查工具
13
+ ############################################
14
+ FROM louislam/uptime-kuma:builder-go AS build_healthcheck
15
+
16
+ ############################################
17
+ # 阶段 3: Node.js 构建层 (核心修改点)
18
+ ############################################
19
+ FROM louislam/uptime-kuma:base2 AS build
20
+ USER node
21
+ WORKDIR /app
22
+
23
+ # 环境变量设置
24
+ ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
25
+ ENV PLAYWRIGHT_BROWSERS_PATH=/app/pw-browsers
26
+
27
+ # 从 fetch-source 拷贝源码
28
+ COPY --chown=node:node --from=fetch-source /src /app
29
+
30
+ # --- 升级 Playwright 逻辑 ---
31
+ # 1. 强制修改 package.json 中的 playwright 版本为 1.56.0
32
+ # 2. 安装依赖
33
+ # 3. 下载并安装 1.56.0 对应的浏览器内核
34
+ RUN sed -i 's/"playwright": ".*"/"playwright": "1.56.0"/' package.json && \
35
+ npm install playwright@1.56.0 && \
36
+ npm ci --omit=dev && \
37
+ npx playwright install chromium
38
+
39
+ # 拷贝健康检查程序
40
+ COPY --chown=node:node --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck
41
+
42
+ RUN mkdir ./data
43
+
44
+ ############################################
45
+ # 阶段 4: ⭐ 主运行镜像 (Release)
46
+ ############################################
47
+ FROM $BASE_IMAGE AS release
48
+ WORKDIR /app
49
+
50
+ LABEL org.opencontainers.image.source="https://github.com/louislam/uptime-kuma"
51
+ ENV UPTIME_KUMA_IS_CONTAINER=1
52
+ # 确保运行环境能找到新版本的浏览器
53
+ ENV PLAYWRIGHT_BROWSERS_PATH=/app/pw-browsers
54
+
55
+ # 从构建层拷贝完整的 app 目录(含新版 Playwright 及其内核)
56
+ COPY --chown=node:node --from=build /app /app
57
+
58
+ EXPOSE 3001
59
+ HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD extra/healthcheck
60
+
61
+ ENTRYPOINT ["/usr/bin/dumb-init", "--"]
62
+ CMD ["node", "server/server.js"]