【发布时间】:2014-08-19 16:57:08
【问题描述】:
我有一些节点 docker-containers 基本上看起来像:
# core nodejs just installs node and git on archlinux
FROM core/nodejs
# clones directory into current working dir
RUN git clone https://github.com/bodokaiser/nearby .
# installs all dependencies
RUN npm install
# lets node execute the source code
CMD ["node", "index.js"]
当我现在重建映像以收集新更新时,它会从 npm 下载所有依赖项。这总是需要大约 5 分钟。
我现在想知道如何避免重新安装所有依赖项。
到目前为止,我的一个想法是使用VOLUME,然后与主机共享代码存储库,这会使其他主机上的图像难以使用。
更新: 我的另一个想法是创建一个包含 git repo 并与运行时容器共享的卷容器。但是 repo 容器必须能够以某种方式重建另一个容器?
【问题讨论】:
-
为什么不设置一个本地 docker 存储库并将您构建的映像推送到那里?
-
这是什么意思?
-
可以运行您自己的 docker 注册表,这是一种本地服务,其运行方式类似于 docker hub 提供的服务。这将是构建和推送图像的最佳位置,然后它们只需要在运行时下载。见 (github.com/docker/docker-registry)
-
这意味着我在我的开发机器上本地构建了一个 docker 文件并将其推送到注册表。然后我可以从注册表中提取它。注册表不会占用很多资源吗?我想把所有东西都放在一台小机器上。
-
注册表可以像在您的机器上运行的另一个容器一样简单。当然,我在想你有几台机器可以使用。如果您只有一台开发机器,请按照以下 Chris 的建议创建基础映像。如果您必须为每张图片下载,这将减少数量。
标签: deployment build dependencies docker