Docker Node 环境打包 减少打包体积

原始Dockerfile

在使用 Node.js 20的官方基础镜像打包出来的镜像体积有1.2G

# 使用 Node.js 20的官方基础镜像
FROM node:20.11.1

# 设置工作目录
WORKDIR /app

# 将 package.json 和 yarn.lock 复制到容器中
COPY package.json yarn.lock ./

# 设置npm镜像
RUN npm config set registry https://registry.npmmirror.com

# 安装yarn和项目依赖
# RUN npm install -g yarn

# 设置Yarn使用淘宝镜像
RUN yarn config set registry 'https://registry.npmmirror.com'

# 安装项目依赖
RUN yarn install

# 将项目文件复制到容器中
COPY . .

# 构建项目
RUN yarn build

# 容器启动时运行
CMD ["yarn", "start"]

新版Dockerfile

  1. 先使用node:20.11.1-alpine构建应用
  2. 在使用node:20.11.1-alpine复制build后的文件
  3. 最后打包的体积为200M
# 第一阶段:构建应用
FROM node:20.11.1-alpine AS build_image

WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install
COPY . .
RUN yarn build

# 第二阶段:运行应用
FROM node:20.11.1-alpine

WORKDIR /app
COPY --from=build_image /app/.next ./.next
COPY --from=build_image /app/node_modules ./node_modules
COPY --from=build_image /app/package.json ./package.json
COPY --from=build_image /app/public ./public

# Next.js官方推荐使用自己的服务器进行生产环境部署
EXPOSE 3000
CMD ["node_modules/.bin/next", "start", "-p", "3000"]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值