Spaces:
Paused
Paused
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"]
|