当前位置: 首页 > 知识库问答 >
问题:

加快Docker容器中NPM安装速度

朱雅惠
2023-03-14

我们使用的标准做法是在版本控制中不包括node_modules。但是,在通过CI/CD管道时,我们必须在多个地方重新安装NPM依赖项,这会使所有操作变得非常缓慢。

有没有一种方法可以用Docker缓存NPM依赖项?我在谷歌搜索“Docker cache npm Dependencies”,2014年的第一个搜索结果是一个死链接。

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

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

下面是Dockerfile的原样:

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/

共有1个答案

闽焕
2023-03-14

这个方法像魔术一样奏效:

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

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

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

如果你遵循这个模式,它将对你起作用:

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
 类似资料:
  • div.body h3{margin:5px 0px 0px 0px;} 步骤一:预检 在部署 Ceph 存储集群之前,需要对 Ceph 客户端和 Ceph 节点进行一些基本的配置,你也可以加入 Ceph 社区以寻求帮助。 预检 安装 Ceph 部署工具 高级包管理工具(APT) 红帽包管理工具(RPM) Ceph 节点安装 安装 NTP 安装 SSH 服务器 创建部署 Ceph 的用户 允许无密

  • 问题内容: 我一直在关注几种不同的教程以及官方教程,但是每当我尝试在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上浏览了几个问题,但是没有运气。 问题答案: 问题是您的应用程序/项目正在尝试访问HOST机器(不是docker容器)中的postgres套接字文件。 要解决这个问题,要么必须在使用该标志为postgres容器设置端口时明确要求进行tcp / ip连接,要么

  • 我一直在关注几个不同的教程以及官方教程,但是每当我试图在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上看了几个问题,但没有运气。

  • 如何在高山容器中安装Docker并运行docker映像?我可以安装,但无法启动docker,并且在运行时获取“docker命令未找到错误”。

  • 我是django、docker和scrapy的新手,我正在尝试运行一个也使用scrapy的django应用程序(我基本上创建了一个django应用程序,它也是一个scrapy应用程序,并尝试从django视图调用蜘蛛)。尽管在需求中指定了这个。txt和从Dockerfile运行pip,在运行和django应用程序在系统检查期间失败,导致web容器退出,原因是以下异常: 我尝试使用而不是pip,,更

  • 我让jenkins在github上的容器和项目源代码中运行。 我需要在与jenkins相同的主机上运行容器中的项目,但不是作为docker中的docker,我希望将它们作为兄弟容器运行。 我的管道如下所示: 从github中提取源文件 我现在要做的是使用jenkins容器中主机的docker套接字: jenkins容器将源代码为/var/jenkins_home/workspace/BRANCH_