dew*_*wey 5 docker dockerfile nestjs
我想dockerize我的nestjs api。使用下面列出的配置,图像变得 319MB 大。有什么比多阶段更简单的减小图像大小的方法?
文件
FROM node:12.13-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
CMD npm start
Run Code Online (Sandbox Code Playgroud)
.dockerignore
.git
.gitignore
node_modules/
dist/
Run Code Online (Sandbox Code Playgroud)
小智 8
为了减少泊坞窗图像大小,您可以使用
在使用多阶段构建时,您应该有 2 个(或更多)FROM 指令,像往常一样,第一阶段确实构建,第二阶段只是从第一个临时层复制构建,并有运行应用程序的说明。在我们的例子中,我们应该复制 dist 和 node_modules 目录。
第二个重要时刻,它在 package.json 文件中正确拆分了“devDependencies”和“dependencies”之间的依赖关系。
在第一阶段安装 deps 后,您应该使用 npm prune --production 从节点模块中删除 devDependencies。
FROM node:12.14.1-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . ./
RUN npm run build && npm prune --production
FROM node:12.14.1-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY --from=build /app/dist /app/dist
COPY --from=build /app/node_modules /app/node_modules
EXPOSE 3000
ENTRYPOINT [ "node" ]
CMD [ "dist/main.js" ]
Run Code Online (Sandbox Code Playgroud)
如果您在使用 node-gyp 时遇到问题,或者只是想看看 - 一个完整的例子,在这个要点中有注释:
https://gist.github.com/nzvtrk/cba2970b1df9091b520811e521d9bd44
更多有用的参考资料:
https://docs.docker.com/develop/develop-images/multistage-build/
https://docs.npmjs.com/cli/prune
| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |