首页 > 解决方案 > dockerhub 从单个 repo 自动构建,单个 dockerfile 构建多个图像

问题描述

我在 github 上有一个 git 存储库,其中包含:

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

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

标签: dockerdocker-composedockerhub

解决方案


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

你可以在 CI 甚至本地机器上构建镜像,然后推送到 dockerhub。您只需要在 dockerhub 上拥有一个帐户,并在使用docker push命令时登录到该帐户。执行此推送时,不必映射到 GitHub 存储库,但您的图像名称应<dockerhub_user>/以某种前缀开头(在https://docs.docker.com/docker-hub/repos/中解释)。如果它们以不同的名称构建也没关系,因为您可以在推送之前通过重新标记来重命名。这样你也可以随心所欲地构建图像。

当您在 dockerhub 中有图像时,您可以在 docker-compose 文件中使用表单引用它们image: <dockerhub_user>/<dockerhub_image_name>:<tag>。当用户这样做时,图像将自动被拉出docker-compose up


推荐阅读