我可以在 Dockerfile 中引用 Dockerfile 吗?

lon*_*556 6 docker dockerfile docker-compose

我有一个 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]
Run Code Online (Sandbox Code Playgroud)

这行不通,但是还有其他方法可以实现这一点吗?

Dav*_*aze 4

一般来说,Docker 空间中的命令和 FROM 指令等内容docker run将使用本地镜像(如果存在);它不需要被推送到存储库。这意味着您可以构建第一个映像并在后面的 Dockerfile 中按名称引用它。(没有办法引用其他 Dockerfile本身。)

\n\n

较新版本的 Docker 有Dockerfile COPY 命令的扩展形式,

\n\n
\n

接受一个标志--from=<name|index>...。如果无法找到具有指定名称的构建阶段,则尝试使用具有相同名称的图像。

\n
\n\n

所以如果你提前跑

\n\n
docker build -t build-env ~/build\n
Run Code Online (Sandbox Code Playgroud)\n\n

那么您在建议的 Dockerfile 中显示的确切语法将起作用

\n\n
FROM some-image\nCOPY --from=build-env /built .\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n