Python Dockerfile后台阶

Python Dockerfile后台阶,python,docker,dockerfile,Python,Docker,Dockerfile,我有我的基本映像,它做一些常见的事情——复制源代码、安装需求等等 FROM python AS base COPY ./src ./src (...) 很少有图像使用它 FROM base AS dev COPY ./requirements-dev.txt . RUN pip install -r requirements-dev.txt (...) 这个解决方案的问题是每次源代码更改时,我的测试/开发需求都会安装。我希望以某种方式在基本映像步骤之间插入我的开发/测试步骤,以便可以使用缓存

我有我的基本映像,它做一些常见的事情——复制源代码、安装需求等等

FROM python AS base
COPY ./src ./src
(...)
很少有图像使用它

FROM base AS dev
COPY ./requirements-dev.txt .
RUN pip install -r requirements-dev.txt
(...)
这个解决方案的问题是每次源代码更改时,我的测试/开发需求都会安装。我希望以某种方式在基本映像步骤之间插入我的开发/测试步骤,以便可以使用缓存


如何实现这一点?

如果您的基本映像和需求没有更改,则应缓存该层。在这种情况下是这样的,但当src目录更改时,基本映像将更改。因为这个步骤在开发/测试步骤之前,所以重新安装开发/测试需求。如果基础映像发生更改,则必须执行所有步骤。就是这样。通常,实际的源代码是一个绝对不会进入基本映像的东西。在“开发”或“测试”需求中,需要进入映像的是什么?你能用普通的
requirements.txt
文件构建一个镜像,并在非Docker虚拟环境中进行本地开发和单元测试吗?如果你的基本镜像和你的需求没有改变,那么应该缓存层。在这种情况下是这样的,但是当src目录改变时,基本镜像就会改变。因为这个步骤在开发/测试步骤之前,所以重新安装开发/测试需求。如果基础映像发生更改,则必须执行所有步骤。就是这样。通常,实际的源代码是一个绝对不会进入基本映像的东西。在“开发”或“测试”需求中,需要进入映像的是什么?您能否使用普通的
requirements.txt
文件构建一个映像,并在非Docker虚拟环境中进行本地开发和单元测试?
FROM base AS test
COPY ./requirements-test.txt .
RUN pip install -r requirements-test.txt
(...)