Files
renjue f1502ed08c
CI / docker (push) Successful in 11m42s
初始化 ToolBox 开发者工具箱。
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-25 11:15:38 +08:00

66 lines
2.1 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Vue 静态站点多阶段构建:Node 构建 + Nginx 运行
# CI 会通过 buildx 传入 IMAGE_PREFIX(见 .gitea/workflows/ci.yml
#
# 构建时环境变量(可选):
# VITE_APP_TITLE 站点标题
# VITE_APP_ICP 备案号
# VITE_GA_MEASUREMENT_ID Google Analytics(留空禁用)
# VITE_JINRISHICI_SDK_URL 今日诗词 SDK(留空禁用)
# 运行时环境变量(可选,覆盖构建值):
# APP_TITLE 站点标题
# APP_ICP 备案号(设为空字符串则不显示)
# APP_GA_MEASUREMENT_ID Google Analytics(设为空字符串则禁用)
# APP_JINRISHICI_SDK_URL 今日诗词 SDK(设为空字符串则禁用)
ARG IMAGE_PREFIX=
ARG VITE_APP_TITLE=ToolBox
ARG VITE_APP_ICP=
ARG VITE_GA_MEASUREMENT_ID=
ARG VITE_JINRISHICI_SDK_URL=
# ---------- 1) 前端构建 ----------
FROM --platform=$BUILDPLATFORM ${IMAGE_PREFIX}node:20-alpine AS web-builder
ARG VITE_APP_TITLE
ARG VITE_APP_ICP
ARG VITE_GA_MEASUREMENT_ID
ARG VITE_JINRISHICI_SDK_URL
ENV VITE_APP_TITLE=${VITE_APP_TITLE}
ENV VITE_APP_ICP=${VITE_APP_ICP}
ENV VITE_GA_MEASUREMENT_ID=${VITE_GA_MEASUREMENT_ID}
ENV VITE_JINRISHICI_SDK_URL=${VITE_JINRISHICI_SDK_URL}
WORKDIR /src
ENV npm_config_registry=https://registry.npmmirror.com \
npm_config_esbuild_binary_host_mirror=https://npmmirror.com/mirrors/esbuild
COPY package.json package-lock.json .npmrc ./
RUN npm ci --userconfig=/src/.npmrc --registry=https://registry.npmmirror.com
COPY index.html vite.config.js ./
COPY public ./public
COPY src ./src
RUN npm run build
# ---------- 2) 运行镜像 ----------
FROM ${IMAGE_PREFIX}nginx:1.27-alpine
RUN apk add --no-cache tzdata \
&& rm -rf /var/cache/apk/*
ENV TZ=Asia/Shanghai
COPY deploy/nginx.conf /etc/nginx/conf.d/default.conf
COPY deploy/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
COPY --from=web-builder /src/dist /usr/share/nginx/html
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget -qO- http://127.0.0.1/ >/dev/null || exit 1
ENTRYPOINT ["/docker-entrypoint.sh"]