栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Docker构建Dockerfile时如何缓存RUN npm安装指令

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Docker构建Dockerfile时如何缓存RUN npm安装指令

好的,所以我发现了这篇有关写docker文件时效率的精彩文章。

这是一个错误的docker文件在运行

RUN npm install
指令之前添加应用程序代码的示例:

FROM ubuntuRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get updateRUN apt-get -y install python-software-properties git build-essentialRUN add-apt-repository -y ppa:chris-lea/node.jsRUN apt-get updateRUN apt-get -y install nodejsWORKDIR /opt/appCOPY . /opt/appRUN npm installEXPOSE 3001CMD ["node", "server.js"]

通过将应用程序的副本分成2个COPY指令(一个用于package.json文件,另一个用于其余文件)并在添加实际代码之前运行npm
install指令,任何代码更改都不会触发RUN npm install指令,只有package.json的更改才会触发它。更好地实践docker文件:

FROM ubuntuMAINTAINER David Weinstein <david@bitjudo.com># install our dependencies and nodejsRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get updateRUN apt-get -y install python-software-properties git build-essentialRUN add-apt-repository -y ppa:chris-lea/node.jsRUN apt-get updateRUN apt-get -y install nodejs# use changes to package.json to force Docker not to use the cache# when we change our application's nodejs dependencies:COPY package.json /tmp/package.jsonRUN cd /tmp && npm installRUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/# From here we load our application's pre in, therefore the previous docker# "layer" thats been cached will be used if possibleWORKDIR /opt/appCOPY . /opt/appEXPOSE 3000CMD ["node", "server.js"]

这是package.json文件的添加位置,安装其依赖项并将其复制到应用程序所在的容器WORKDIR中:

ADD package.json /tmp/package.jsonRUN cd /tmp && npm installRUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/

为了避免每个docker构建上的npm安装阶段,只需复制这些行并将^ / opt / app ^更改为您的应用在容器中的位置。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号