代码之家  ›  专栏  ›  技术社区  ›  learningtech

为什么在复制package.json之后还要复制dot[[副本]

  •  0
  • learningtech  · 技术社区  · 4 年前

    我正在这里尝试有关如何将nodejs应用程序停靠的教程: https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

    我不明白的是为什么我们不接受这份docker文件

    FROM node:14
    WORKDIR /usr/src/app
    COPY package*.json ./
    
    RUN npm install
    COPY . .
    
    EXPOSE 8080
    CMD [ "node", "server.js" ]
    

    并简化为:

    FROM node:14
    WORKDIR /usr/src/app
    COPY . .
    
    RUN npm install
    
    
    EXPOSE 8080
    CMD [ "node", "server.js" ]
    
    

    也就是说,为什么我们必须在npm安装之后复制所有的文件?既然已经包含了 package*.json ?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Bas    4 年前

    这是因为Docker中的多层构建。每个层(/step)都被缓存,因此 NPM install package.json package-lock.json 改变了。

        2
  •  1
  •   Yassine Ben Amar    4 年前

    如果您首先复制package.json并运行npm install,那么下次构建映像时就不必再次安装依赖项,除非您修改package.json文件

    推荐文章