是否应该将`Package-lock.json`复制到Dockerfile中的容器镜像中? [英] Should I copy `package-lock.json` to the container image in Dockerfile?

查看:9
本文介绍了是否应该将`Package-lock.json`复制到Dockerfile中的容器镜像中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的Dockerfile

FROM node:12-slim

ENV NODE_ENV=production

WORKDIR /

# COPY . . # COPY ENTIRE FOLDER ?

COPY ./package.json ./package.json
COPY ./dist ./dist

RUN npm install --only=production

EXPOSE 8080

ENTRYPOINT npm start

这是我的.dockerignore文件:

node_modules
您可以看到,我只是复制package.json,而不是package-lock.json。我猜测,由于我将运行RUN npm install来构建映像,我认为它应该创建自己的package-lock.json

但我在生成过程中收到此警告:

> Step #0: > protobufjs@6.10.2 postinstall /node_modules/protobufjs
> Step #0: > node scripts/postinstall
> Step #0:
> Step #0: npm notice created a lockfile as package-lock.json. You should commit this file.
> Step #0: npm WARN knative-serving-helloworld@1.0.0 No repository field.    
> Step #0: 
> Step #0: added 304 packages from 217 contributors and audited 312 packages in 15.27s

那么,我应该将此添加到我的Dockerfile中吗?

COPY ./package-lock.json ./package-lock.json

推荐答案

绝对应该将package-lock.json文件复制进去。它的作用与package.json文件略有不同:package.json可以声明&我确信我的应用程序可以与react程序包的版本17一起工作,其中package-lock.json表示我已使用该程序包的版本17.0.1构建和测试。

拥有这两个文件后,有一个单独的npm ci命令针对此情况进行了优化。

COPY package.json package-lock.json .
# Run `npm ci` _before_ copying the application in
RUN NODE_ENV=production npm ci
# If any file in `dist` changes, this will stop Docker layer caching
COPY ./dist ./dist

这篇关于是否应该将`Package-lock.json`复制到Dockerfile中的容器镜像中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆