51 lines
1.2 KiB
Docker
51 lines
1.2 KiB
Docker
# 构建应用
|
|
FROM --platform=$BUILDPLATFORM node:18-alpine AS builder
|
|
|
|
# 设置阿里云镜像加速
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
|
|
# 安装 pnpm
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
|
|
WORKDIR /app
|
|
|
|
# 设置 pnpm 使用指定的 registry
|
|
ARG REGISTRY_URL=https://registry.npmmirror.com
|
|
RUN pnpm config set registry $REGISTRY_URL
|
|
|
|
# 复制项目文件 (package.json等)
|
|
COPY ./orion-visor-ui/package.json ./orion-visor-ui/pnpm-lock.yaml* ./
|
|
|
|
# 安装依赖 (利用 Docker 缓存层)
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# 复制源代码
|
|
COPY ./orion-visor-ui/ .
|
|
|
|
# 构建项目
|
|
RUN pnpm build
|
|
|
|
# 打包静态资源
|
|
FROM --platform=$BUILDPLATFORM nginx:alpine
|
|
|
|
# 系统时区
|
|
ARG TZ=Asia/Shanghai
|
|
|
|
# 添加包 & 设置时区
|
|
RUN \
|
|
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
|
|
apk update && \
|
|
apk add --no-cache tzdata && \
|
|
ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
|
echo "${TZ}" > /etc/timezone && \
|
|
rm -rf /var/cache/apk/* && \
|
|
rm -rf /etc/nginx/conf.d/*
|
|
|
|
# 复制包
|
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
|
|
|
# 复制配置
|
|
COPY ./docker/ui/nginx.conf /etc/nginx/conf.d
|
|
|
|
# 启动
|
|
CMD ["nginx", "-g", "daemon off;"] |