跳到主要内容

前端应用

FROM node:20.19.3-bullseye-slim AS builder

WORKDIR /app

COPY package.json package-lock.json ./

RUN --mount=type=cache,target=/var/cache/apt,id=apt-cache \
--mount=type=cache,target=/root/.npm,id=npm-cache,sharing=locked \
sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update -y \
&& apt-get install -y --no-install-recommends git make \
&& rm -rf /var/lib/apt/lists/* \
&& npm config set registry https://registry.npmmirror.com \
&& npm config -g get cache \
&& npm install

COPY . .

RUN --mount=type=cache,target=/root/.npm,id=npm-cache,sharing=locked \
npm run build

FROM node:20-alpine

RUN --mount=type=cache,target=/var/cache/apk,id=apk-cache \
--mount=type=cache,target=/root/.npm,id=npm-cache,sharing=locked \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update --no-cache \
&& apk add --no-cache ca-certificates tzdata bash curl \
&& npm config set registry https://registry.npmmirror.com \
&& npm install -g serve

RUN addgroup -S server && adduser -S server -G server

USER server

WORKDIR /app

COPY --from=builder /app/dist ./dist

EXPOSE 8080
CMD ["serve", "-s", "dist", "-p", "8080", "--cors"]