我使用诗歌构建了一个简单的python包。我有一个存储库,并且我的测试在Docker容器中运行,我在同一仓库中发布了Docker映像。我有一个Azure管道,当我提交时,我使用缓存来构建Docker映像。我有以下问题,在映像中,我必须构建我的python包,因此,如果pyproject已更改,例如,当我添加新库时,映像将执行
COPY poetry.lock pyproject.toml ./
RUN poetry install --no-interaction --no-ansi
是否有使用缓存的更有效方法?从某种意义上说,如果我添加或删除一个库,则只能构建/删除新库以及所有依赖该库的库。
我构建映像的另一个问题是,如果我的pyproject因为我的软件包的新版本而更改,那么将执行安装。
答案 0 :(得分:1)
似乎不可能仅从缓存中构建/删除新库。因为这是默认行为,所以如果添加和复制指令中的文件内容使缓存的图像无效。 docker将在dockerfile中按顺序运行所有指令以生成新映像。
检查this document中的利用构建缓存部分,以了解有关docker如何获取缓存的映像并确定是否创建新映像的更多信息。