Dockfile的简单优化

clearmind
15
2024-12-03

以nuxt的部署为例子

参考: https://cloud.tencent.com/developer/article/1881764

1.使用node镜像时采用alpine --最终大小646M

FROM node:18.18.0-alpine

MAINTAINER ClearMind

WORKDIR /usr/src/nuxt-app

COPY package*.json ./
RUN npm install --global cnpm --registry=https://registry.npmmirror.com
RUN cnpm install

COPY . .

RUN npm run build
RUN npm cache clean --force
ENV NUXT_HOST=0.0.0.0
ENV NUXT_PORT=3000

EXPOSE 3000

ENTRYPOINT ["node", ".output/server/index.mjs"]

2.采用逐步构建 --最终大小186M

# 构建阶段1
FROM node:18.18.0-alpine AS build

MAINTAINER ClearMind

WORKDIR /usr/src/nuxt-app

COPY package*.json ./
RUN npm install --global cnpm --registry=https://registry.npmmirror.com
RUN cnpm install

COPY . .

RUN cnpm run build

# 构建阶段2
FROM node:18.18.0-alpine
WORKDIR /app
COPY --from=build /usr/src/nuxt-app/.output /app


ENV NUXT_HOST=0.0.0.0 
EXPOSE 3000

ENTRYPOINT ["node", "server/index.mjs"]
动物装饰