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