gpt4 book ai didi

docker - 如何从另一个 Dockerfile 生成 Dockerfile?

转载 作者:行者123 更新时间:2023-12-04 16:27:45 29 4
gpt4 key购买 nike

我有一个应用程序有两个 Dockerfile ,说 Dockerfile.fooDockerfile.bar ,预计将为 docker-compose.yml 的两个不同服务生成两个不同的图像.

例如,它可能看起来像:

# ...
services:
service1:
build:
context: .
dockerfile: Dockerfile.foo
service1:
build:
context: .
dockerfile: Dockerfile.bar
# ...

但两者都是 Dockerfile.{foo,bar}共享相同的前半部分,而他们的左侧部分不同。

如何通过制作 .{foo,bar} 避免不必要的重复构建和维护麻烦从底座伸出 Dockerfile.common ?换句话说,是否可以归档类似 FROM Dockerfile.common 的内容?内 docker-compose.yml ?

更新:

我期望的是使用 docker-compose无需手动(或使用单独的 build.sh )运行即可自动化构建过程:
  • docker build -f Dockerfile.common -t common .首先;
  • 然后 docker build -f Dockerfile.foo -t foo . && docker build -f Dockerfile.bar -t bar .以便 Dockerfile.{foo, bar}可以适当引用common图片。
  • 最佳答案

    如果你想避免使用不必要的中间标签并且你使用 Docker 20.10+,你也可以这样做:

    # syntax = edrevo/dockerfile-plus

    INCLUDE+ Dockerfile.common

    # The rest of Dockerfile.foo would go after the INCLUDE+ instruction

    RUN echo "Hello World"
    INCLUDE+指令由 Dockerfile 中的第一行导入。您可以在 https://github.com/edrevo/dockerfile-plus 阅读有关 dockerfile-plus 的更多信息。

    关于docker - 如何从另一个 Dockerfile 生成 Dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59715327/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com