gpt4 book ai didi

docker - 我应该将 `package-lock.json` 复制到 Dockerfile 中的容器镜像吗?

转载 作者:行者123 更新时间:2023-12-03 18:36:15 25 4
gpt4 key购买 nike

这是我的 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

关于docker - 我应该将 `package-lock.json` 复制到 Dockerfile 中的容器镜像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65234362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com