首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速Docker容器中的NPM安装

加速Docker容器中的NPM安装
EN

Stack Overflow用户
提问于 2017-05-05 02:58:05
回答 2查看 18.4K关注 0票数 19

我们使用的是不在版本控制中包含node_modules的标准实践。然而,当通过CI/CD管道时,我们必须在几个地方重新安装NPM依赖项,这会使一切变得非常缓慢。

有没有办法用Docker缓存NPM的依赖关系?我在Google上搜索"docker cache npm dependencies“,2014年的第一次搜索结果是一个死链接。

没有其他有价值的东西出现。

一种解决方案是将node_modules包含在版本控制中,但我认为这将是一个巨大的错误。我认为以某种方式缓存依赖项将是最好的选择。

下面是Dockerfile的原样:

代码语言:javascript
复制
FROM node:6

COPY . .  # copy all files, but node_modules does not exist ( => gitignored)

RUN npm install --no-optional --only=production > /dev/null 2>&1
RUN npm install -g bower  > /dev/null 2>&1
RUN bower install --config.interactive=false --allow-root > /dev/null 2>&1

ENTRYPOINT ["/bin/bash", "/root/cdt/run.sh"]

这里有一个可能的解决方案,但我不太清楚它是如何工作的:

=> http://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/

EN

回答 2

Stack Overflow用户

发布于 2017-05-05 06:31:25

这个方法像魔术一样工作:

https://blog.playmoweb.com/speed-up-your-builds-with-docker-cache-bfed14c051bf

Docker有一种特殊的缓存方式,显然最好使用与生俱来的缓存功能。

不能说我完全理解它是如何工作的,但它确实起作用了。

如果你遵循这个模式,它将为你工作:

代码语言:javascript
复制
FROM mhart/alpine-node:5.6.0
WORKDIR /src

# Expose the port 3000
EXPOSE 3000

# Set the default command to run when a container starts
CMD ["node", "server.js"]

# Install app dependencies
COPY package.json /src
RUN npm install

# Copy your code in the docker image
COPY . /src
票数 16
EN

Stack Overflow用户

发布于 2017-05-05 03:46:27

你有没有试过用纱线代替npm更快?Yarn进行并行封装安装

https://yarnpkg.com/lang/en/compare/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43790807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档