我可以在Dockerfile中引用Dockerfile吗?

我可以在Dockerfile中引用Dockerfile吗?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有一个Dockerfile,它创建了我想在这里使用的构建映像:~/build/Dockerfile,然后我使用标准映像进行部署 从~/build/Dockerfile生成的图像没有发布到任何地方,我知道我可以简单地将一个Dockerfile复制粘贴到另一个Dockerfile中,但是如果我可以简单地引用它会更好 在部署时是否可能以某种方式引用Dockerfile本身 像这样: FROM [insert something that creates an image using ~/build/

我有一个Dockerfile,它创建了我想在这里使用的构建映像:~/build/Dockerfile,然后我使用标准映像进行部署

从~/build/Dockerfile生成的图像没有发布到任何地方,我知道我可以简单地将一个Dockerfile复制粘贴到另一个Dockerfile中,但是如果我可以简单地引用它会更好

在部署时是否可能以某种方式引用Dockerfile本身

像这样:

FROM [insert something that creates an image using ~/build/Dockerfile] as build-env
... build operations ....

FROM some-image
COPY --from=build-env /built .
ENTRYPOINT [blah]

这是行不通的,但是有没有其他方法可以做到这一点?

不,你不能这样做,因为你必须提供一个图像

将复制行更改为

并编写一个脚本来构建您的图像:

cd path1
docker build -t step1 .
cd path2
docker build -t final_image . 

如果您不想在Dockerfile中硬编码step1,请将其替换为var并使用ARG调用

否您不能这样做,因为您必须提供一个要从中获取的映像

将复制行更改为

并编写一个脚本来构建您的图像:

cd path1
docker build -t step1 .
cd path2
docker build -t final_image . 

如果您不想硬编码Dockerfile中的step1,请将其替换为var,并使用ARG调用。通常,Docker空间中的Docker run命令和FROM指令将使用本地映像(如果存在);它不需要推送到存储库。这意味着您可以构建第一个映像,并在稍后的Dockerfile中按名称引用它。无法引用另一个Dockerfile本身

较新版本的Docker有一个扩展形式

接受标志-from=。。。。如果找不到具有指定名称的生成阶段,将尝试使用具有相同名称的映像

所以如果你提前跑

docker build -t build-env ~/build
然后,您在建议的Dockerfile中显示的确切语法将起作用

FROM some-image
COPY --from=build-env /built .

中间构建映像实际上没有被推送到任何地方并不重要。

通常Docker空间中的东西,如Docker run命令和FROM指令,如果存在本地映像,将使用本地映像;它不需要推送到存储库。这意味着您可以构建第一个映像,并在稍后的Dockerfile中按名称引用它。无法引用另一个Dockerfile本身

较新版本的Docker有一个扩展形式

接受标志-from=。。。。如果找不到具有指定名称的生成阶段,将尝试使用具有相同名称的映像

所以如果你提前跑

docker build -t build-env ~/build
然后,您在建议的Dockerfile中显示的确切语法将起作用

FROM some-image
COPY --from=build-env /built .

中间构建映像实际上没有被推送到任何地方并不重要。

As-says-FROM只有一个As参数,而不是一个。As-says-FROM只有一个As参数,而不是一个。谢谢。我不知道!非常感谢。我不知道!