I';我正在努力制作一个完美的docker构建文件,我每次都需要从头开始构建吗?

I';我正在努力制作一个完美的docker构建文件,我每次都需要从头开始构建吗?,docker,dockerfile,Docker,Dockerfile,对于marker要求我创建dockerfile来构建项目容器的任务,但是我有一组相当复杂的任务,我需要以正确的方式一起工作,以便dockerfile对我有用,因此,我目前正在构建一个每次需要30分钟的文件,只是为了看看微小的更改是否会以正确的方式影响结果,所以我的问题是,有没有更好的方法来实现这一点?或者前面的问题可能会有所帮助: 根据我的经验,每次完整构建都意味着你在对抗docker的缓存机制,通常是通过COPY在Dockerfile的早期 如果复制到映像中的文件随后被用于驱动包管理器,或下载

对于marker要求我创建dockerfile来构建项目容器的任务,但是我有一组相当复杂的任务,我需要以正确的方式一起工作,以便dockerfile对我有用,因此,我目前正在构建一个每次需要30分钟的文件,只是为了看看微小的更改是否会以正确的方式影响结果,所以我的问题是,有没有更好的方法来实现这一点?

或者前面的问题可能会有所帮助:

根据我的经验,每次完整构建都意味着你在对抗docker的缓存机制,通常是通过
COPY在Dockerfile的早期

如果复制到映像中的文件随后被用于驱动包管理器,或下载其他源-请尝试仅复制脚本或需求文件,然后使用它,然后复制其余的源

一个简化的python示例,在“最佳实践”链接中重述:

COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .

有了这种结构,只要requirements.txt不发生变化,第一个
复制
和后面的
运行
命令使用缓存层和重建就快得多。

第一个技巧是对docker构建时需要下载的工件使用复制/添加

第二个技巧是,您可以为每个步骤创建一个Dockerfile,并在接下来的步骤中重用它们

例如,如果要安装postgres db,并在映像中安装wildfly。您可以开始仅为postgresDB创建Dockerfile,并将其构建为您的postgres docker映像。 然后创建另一个Dockerfile,通过

FROM your-postgres
.....

诸如此类……

您没有在此处显示Docker文件吗?我的问题是关于过程,而不是Docker文件中的内容在没有Docker文件可供查看的情况下,我会参考指南文档:我遵循的另一种做法是基于我的“技术”堆栈创建基本图像。这样,每个应用程序都有一个非常简单的Dockerfile