This commit is contained in:
+17
-10
@@ -1,19 +1,25 @@
|
|||||||
# 开源项目门户(VitePress)构建镜像
|
# 开源项目门户(VitePress)构建镜像
|
||||||
#
|
#
|
||||||
# 构建参数:
|
# 构建参数:
|
||||||
# SITE_BASE —— 站点资源前缀,同时决定容器内 nginx 的形态:
|
# SITE_BASE —— 站点资源前缀,同时决定容器内 nginx 的形态:
|
||||||
# /www/ 过渡形态:挂在已有网关的 /www/ 路径下(没有独立域名时用)
|
# /www/ 子路径形态:挂在已有网关的 /www/ 路径下
|
||||||
# / 独立域名形态:站点独占域名根路径
|
# / 独立域名形态:站点独占域名根路径
|
||||||
#
|
# BASE_REGISTRY —— 基础镜像来源,默认官方 docker.io 的 library 命名空间。
|
||||||
# 前缀与 nginx 形态必须配套:VitePress 产物里的资源引用是绝对路径
|
# 部分内网机器拉不动 docker.io(实测 192.168.101.164 直连
|
||||||
# (<base>assets/xxx),base=/www/ 时只能由带 alias 的 location 提供服务;
|
# registry-1.docker.io 超时),换代理源即可:
|
||||||
# base=/ 时只能由根路径 location 提供服务。混用会出现「页面 200 但 JS/CSS 全 404」。
|
# docker build --build-arg BASE_REGISTRY=docker.m.daocloud.io/library ...
|
||||||
|
# 形如 <registry>/<命名空间段>,需包含镜像自身的命名空间。
|
||||||
#
|
#
|
||||||
# 用法(仓库根目录):
|
# 用法(仓库根目录):
|
||||||
# docker build -t snowgoat-open-portal:dev --build-arg SITE_BASE=/www/ .
|
# docker build -t snowgoat-open-portal:dev \
|
||||||
FROM node:22-alpine AS builder
|
# --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 SITE_BASE=/www/
|
||||||
|
ARG BASE_REGISTRY
|
||||||
|
|
||||||
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
|
||||||
&& apk add --no-cache git
|
&& apk add --no-cache git
|
||||||
@@ -26,9 +32,10 @@ RUN npm ci
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN SITE_BASE=${SITE_BASE} npm run build
|
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 SITE_BASE=/www/
|
||||||
|
ARG BASE_REGISTRY
|
||||||
|
|
||||||
COPY --from=builder /app/.vitepress/dist /usr/share/nginx/html
|
COPY --from=builder /app/.vitepress/dist /usr/share/nginx/html
|
||||||
COPY docker/nginx.root.conf /etc/nginx/conf.d/default.conf
|
COPY docker/nginx.root.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ services:
|
|||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
SITE_BASE: '${SITE_BASE:-/}'
|
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
|
image: snowgoat-open-portal:local
|
||||||
container_name: snowgoat-open-portal
|
container_name: snowgoat-open-portal
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
Reference in New Issue
Block a user