File size: 2,065 Bytes
a4c50e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 设定基础镜像变量
ARG BASE_IMAGE=louislam/uptime-kuma:base2

############################################
# 阶段 1: 自动克隆源码
############################################
FROM alpine/git AS fetch-source
WORKDIR /src
RUN git clone https://github.com/louislam/uptime-kuma.git .

############################################
# 阶段 2: 构建 Go 健康检查工具
############################################
FROM louislam/uptime-kuma:builder-go AS build_healthcheck

############################################
# 阶段 3: Node.js 构建层 (核心修改点)
############################################
FROM louislam/uptime-kuma:base2 AS build
USER node
WORKDIR /app

# 环境变量设置
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
ENV PLAYWRIGHT_BROWSERS_PATH=/app/pw-browsers

# 从 fetch-source 拷贝源码
COPY --chown=node:node --from=fetch-source /src /app

# --- 升级 Playwright 逻辑 ---
# 1. 强制修改 package.json 中的 playwright 版本为 1.56.0
# 2. 安装依赖
# 3. 下载并安装 1.56.0 对应的浏览器内核
RUN sed -i 's/"playwright": ".*"/"playwright": "1.56.0"/' package.json && \
    npm install playwright@1.56.0 && \
    npm ci --omit=dev && \
    npx playwright install chromium

# 拷贝健康检查程序
COPY --chown=node:node --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck

RUN mkdir ./data

############################################
# 阶段 4: ⭐ 主运行镜像 (Release)
############################################
FROM $BASE_IMAGE AS release
WORKDIR /app

LABEL org.opencontainers.image.source="https://github.com/louislam/uptime-kuma"
ENV UPTIME_KUMA_IS_CONTAINER=1
# 确保运行环境能找到新版本的浏览器
ENV PLAYWRIGHT_BROWSERS_PATH=/app/pw-browsers

# 从构建层拷贝完整的 app 目录(含新版 Playwright 及其内核)
COPY --chown=node:node --from=build /app /app

EXPOSE 3001
HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD extra/healthcheck

ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["node", "server/server.js"]