From f709c05c0d1cf9a5c15308533912bb7479c07afc Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 16 Jun 2026 23:41:40 +0800 Subject: [PATCH] =?UTF-8?q?build(ui):=20=E9=87=8D=E6=9E=84Dockerfile?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui/Dockerfile | 78 +++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 43 deletions(-) diff --git a/packages/ui/Dockerfile b/packages/ui/Dockerfile index bd71d3e0b..e1181a35e 100644 --- a/packages/ui/Dockerfile +++ b/packages/ui/Dockerfile @@ -1,12 +1,9 @@ -FROM node:22-trixie-slim AS builder - -# RUN apk add build-base -# RUN wget -O - https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2 | tar -xj && \ -# cd jemalloc-5.3.0 && \ -# ./configure && \ -# make && \ -# make install +# 根据目标平台选择基础镜像:amd64/arm64 用 trixie-slim,arm/v7 没有 trixie-slim 发布,回退到 alpine +FROM --platform=linux/amd64 node:22-trixie-slim AS base-amd64 +FROM --platform=linux/arm64 node:22-trixie-slim AS base-arm64 +FROM --platform=linux/arm/v7 node:22-alpine AS base-armv7 +FROM base-${TARGETARCH}${TARGETVARIANT:+-}${TARGETVARIANT} AS builder WORKDIR /workspace/ COPY . /workspace/ @@ -14,47 +11,41 @@ COPY . /workspace/ # https://pnpm.io/zh/migration RUN npm install -g pnpm@10.33.4 -#RUN cd /workspace/certd-client && pnpm install && npm run build RUN cp /workspace/certd-client/dist/* /workspace/certd-server/public/ -rf RUN cd /workspace/certd-server && pnpm install && npm run build-on-docker -# RUN cd /workspace/certd-server && \ -# pnpm install --ignore-scripts && \ -# yes | pnpm approve-builds && \ -# pnpm rebuild && \ -# npm run build-on-docker - -FROM node:22-trixie-slim +FROM base-${TARGETARCH}${TARGETVARIANT:+-}${TARGETVARIANT} EXPOSE 7001 EXPOSE 7002 -# 安装jemalloc内存分配器,优化内存占用 -- 基本没用,反而更高了 -# COPY --from=builder /usr/local/lib/libjemalloc.so.2 /usr/local/lib/ -# ENV LD_PRELOAD=/usr/local/lib/libjemalloc.so.2 - - -# RUN apk add --no-cache openssl -# RUN apk add --no-cache openjdk8 -# RUN apk add --no-cache gcompat - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - gnupg \ - wget \ - openssl \ - netcat-openbsd \ - iputils-ping \ - dnsutils \ - iproute2 \ - && wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /usr/share/keyrings/adoptium.gpg > /dev/null \ - && echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main" | tee /etc/apt/sources.list.d/adoptium.list \ - && apt-get update \ - && apt-get install -y --no-install-recommends temurin-8-jre \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - +# 根据基础镜像发行版选择包管理器:trixie-slim 走 apt-get,alpine 走 apk +# alpine 上没有 netcat-openbsd / iputils-ping / dnsutils / iproute2 这些 Debian 包名, +# 但存在功能等价的 apk 包(busybox 已内置 ping/nslookup,需要额外安装 netcat-openbsd / iproute2 / bind-tools) +RUN if [ -f /etc/debian_version ]; then \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + ca-certificates \ + gnupg \ + wget \ + openssl \ + netcat-openbsd \ + iputils-ping \ + dnsutils \ + iproute2 \ + && wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /usr/share/keyrings/adoptium.gpg > /dev/null \ + && echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main" | tee /etc/apt/sources.list.d/adoptium.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends temurin-8-jre \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/*; \ + elif [ -f /etc/alpine-release ]; then \ + apk add --no-cache \ + openssl \ + openjdk8-jre \ + else \ + echo "Unsupported base image"; exit 1; \ + fi WORKDIR /app/ @@ -73,6 +64,8 @@ RUN ARCH=$(uname -m) && \ wget -O $LEGO_DOWNLOAD_DIR/lego_v${LEGO_VERSION}_linux_amd64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_amd64.tar.gz; \ elif [ "$ARCH" = "aarch64" ]; then \ wget -O $LEGO_DOWNLOAD_DIR/lego_v${LEGO_VERSION}_linux_arm64.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_arm64.tar.gz; \ + elif [ "$ARCH" = "armv7l" ] || [ "$ARCH" = "arm" ]; then \ + wget -O $LEGO_DOWNLOAD_DIR/lego_v${LEGO_VERSION}_linux_arm.tar.gz https://github.com/go-acme/lego/releases/download/v${LEGO_VERSION}/lego_v${LEGO_VERSION}_linux_arm.tar.gz; \ else \ echo "Unsupported architecture: $ARCH"; \ fi @@ -87,4 +80,3 @@ CMD ["node", "--optimize-for-size", "./bootstrap.js"] -