gpt4 book ai didi

dockerhub 从单个存储库自动构建,使用单个 dockerfile 构建多个镜像

转载 作者:行者123 更新时间:2023-12-02 08:17:17 25 4
gpt4 key购买 nike

我在 github 上有一个 git 存储库:

  • 一个 Dockerfile,它构建多个要一起使用的镜像。 (maven 构建通过从工件存储库下载然后生成一个 war 文件和 sql 文件;多阶段构建然后创建一个包含 war 的 slim tomcat 镜像和一个预加载了 sql 数据的 slim mysql 镜像)。

    <
  • 一个 docker-compose.yml 文件,它使用“target”指令在多阶段构建的镜像上构建和运行容器。

这在开发过程中效果很好。但它迫使用户在他们的计算机上构建图像。我希望用户只能下载图像。该设置还应该使用 dockerhub 的自动构建来保持镜像最新。

我该如何设置才能实现这一目标?我向用户提供哪些命令或文件以允许他们下载镜像并运行容器?如果不可能,我该怎么做才能使它成为可能(拆分存储库?复制粘贴 dockerfile?将中间镜像发布到 dockerhub 并确保正确的构建顺序?不使用 dockerhub 的自动构建?)

最佳答案

使用dockerhub's automated builds您需要为每个 Dockerfile 构建一个镜像并拥有一个 Dockerfile per repo 。镜像名称来自源存储库名称(其中 github 组织/用户名作为 docker 镜像用户名,github 存储库名称作为 docker 镜像名称)。多阶段构建在自动构建中工作,但每个 Dockerfile 只发布一个镜像(构建的最终镜像)。

您可以在 CI 中甚至在本地计算机上构建镜像,然后推送到 dockerhub。您只需要在 dockerhub 上有一个帐户,并在使用 docker push command 时登录该帐户即可。 。执行此推送时,不必有任何到 GitHub 存储库的映射,但您的图像名称应以 <dockerhub_user>/ 开头。作为一种前缀(在 https://docs.docker.com/docker-hub/repos/ 中进行了解释)。如果它们以不同的名称构建也没关系,因为您可以在推送之前通过重新标记来重命名。通过这种方式,您还可以根据自己的喜好构建图像。

当 dockerhub 中有镜像时,您可以使用 image: <dockerhub_user>/<dockerhub_image_name>:<tag> 形式在 docker-compose 文件中引用它们。 。当用户执行 docker-compose up 时,图像将自动被拉取.

关于dockerhub 从单个存储库自动构建,使用单个 dockerfile 构建多个镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947044/

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