使用缓存的仓库中的Docker映像

时间:2019-11-28 13:23:31

标签: python docker azure-pipelines

我使用诗歌构建了一个简单的python包。我有一个存储库,并且我的测试在Docker容器中运行,我在同一仓库中发布了Docker映像。我有一个Azure管道,当我提交时,我使用缓存来构建Docker映像。我有以下问题,在映像中,我必须构建我的python包,因此,如果pyproject已更改,例如,当我添加新库时,映像将执行

COPY poetry.lock pyproject.toml ./

RUN poetry install --no-interaction --no-ansi

是否有使用缓存的更有效方法?从某种意义上说,如果我添加或删除一个库,则只能构建/删除新库以及所有依赖该库的库。

我构建映像的另一个问题是,如果我的pyproject因为我的软件包的新版本而更改,那么将执行安装。

1 个答案:

答案 0 :(得分:1)

似乎不可能仅从缓存中构建/删除新库。因为这是默认行为,所以如果添加和复制指令中的文件内容使缓存的图像无效。 docker将在dockerfile中按顺序运行所有指令以生成新映像。

检查this document中的利用构建缓存部分,以了解有关docker如何获取缓存的映像并确定是否创建新映像的更多信息。