# 设定基础镜像变量 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"]