【问题标题】:How to speed up clone of a Git Repo into Docker Container?如何加快将 Git Repo 克隆到 Docker 容器中的速度?
【发布时间】:2019-07-22 17:10:25
【问题描述】:
我在 Dockerfile 中使用了来自外部 Python 存储库的一些代码。
RUN git clone ssh://git@foobar.com/sample_repo.git /sample_repo
我怎样才能让所有这些代码在 Docker 容器中 (A) 可访问; (B) 比git clone 快得多; (C) 获取存储库中最近的代码更改?
在我开始创建private Python package repository 之前,我想确保我实施的解决方案能够很好地与 Docker 和上述所有因素配合使用。
【问题讨论】:
标签:
python
docker
dockerfile
python-packaging
【解决方案1】:
如果您希望将最近的代码更改提取到现有容器中,实际上没有办法在容器中运行git clone,以便您以后可以git pull。
如果您不需要整个历史记录,那么git clone --depth 1 可能会加快初始克隆的速度。
RUN git clone --depth 1 ssh://git@foobar.com/sample_repo.git /sample_repo
通过向克隆命令提供 --depth 1 的参数,进程
将仅复制存储库中所有内容的最新版本。
这可能是 Git 服务器的救星,否则可能
被 CI/CD(持续集成/持续交付)自动化所淹没。
如果您根本不想在容器中使用git,并且可以轻松地重新构建映像以获取代码更改,那么可以使用一个帮助脚本对主机执行git archive,然后是ADD Dockerfile 中的声明也可以。