From 41a9f72412047e0883721c265273a0ffd10f81ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=80=E5=B0=8F=E4=BA=91?= Date: Wed, 4 Nov 2026 13:15:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9F=BA=E7=A1=80=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E6=BA=90=E5=8F=82=E6=95=B0=E5=8C=96=EF=BC=88BASE=5FREGISTRY?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=86=85=E7=BD=91=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E6=8B=89=E4=B8=8D=E5=8A=A8=20docker.io?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 27 +++++++++++++++++---------- deploy/docker-compose.yml | 3 +++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index e2088a6..68a54ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,25 @@ # 开源项目门户(VitePress)构建镜像 # # 构建参数: -# SITE_BASE —— 站点资源前缀,同时决定容器内 nginx 的形态: -# /www/ 过渡形态:挂在已有网关的 /www/ 路径下(没有独立域名时用) -# / 独立域名形态:站点独占域名根路径 -# -# 前缀与 nginx 形态必须配套:VitePress 产物里的资源引用是绝对路径 -# (assets/xxx),base=/www/ 时只能由带 alias 的 location 提供服务; -# base=/ 时只能由根路径 location 提供服务。混用会出现「页面 200 但 JS/CSS 全 404」。 +# SITE_BASE —— 站点资源前缀,同时决定容器内 nginx 的形态: +# /www/ 子路径形态:挂在已有网关的 /www/ 路径下 +# / 独立域名形态:站点独占域名根路径 +# BASE_REGISTRY —— 基础镜像来源,默认官方 docker.io 的 library 命名空间。 +# 部分内网机器拉不动 docker.io(实测 192.168.101.164 直连 +# registry-1.docker.io 超时),换代理源即可: +# docker build --build-arg BASE_REGISTRY=docker.m.daocloud.io/library ... +# 形如 /<命名空间段>,需包含镜像自身的命名空间。 # # 用法(仓库根目录): -# docker build -t snowgoat-open-portal:dev --build-arg SITE_BASE=/www/ . -FROM node:22-alpine AS builder +# docker build -t snowgoat-open-portal:dev \ +# --build-arg SITE_BASE=/ \ +# --build-arg BASE_REGISTRY=docker.m.daocloud.io/library . +ARG BASE_REGISTRY=docker.io/library + +FROM ${BASE_REGISTRY}node:22-alpine AS builder ARG SITE_BASE=/www/ +ARG BASE_REGISTRY RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ && apk add --no-cache git @@ -26,9 +32,10 @@ RUN npm ci COPY . . RUN SITE_BASE=${SITE_BASE} npm run build -FROM nginx:1.27-alpine +FROM ${BASE_REGISTRY}nginx:1.27-alpine ARG SITE_BASE=/www/ +ARG BASE_REGISTRY COPY --from=builder /app/.vitepress/dist /usr/share/nginx/html COPY docker/nginx.root.conf /etc/nginx/conf.d/default.conf diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 98e54eb..f10adad 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -20,6 +20,9 @@ services: dockerfile: Dockerfile args: SITE_BASE: '${SITE_BASE:-/}' + # 基础镜像源。默认官方 docker.io;拉不动时改成代理源, + # 例:docker.m.daocloud.io/library(实测 192.168.101.164 直连 docker.io 超时,该代理可用) + BASE_REGISTRY: '${BASE_REGISTRY:-docker.io/library}' image: snowgoat-open-portal:local container_name: snowgoat-open-portal restart: unless-stopped