我在github上有一个git存储库,包含:
这在开发过程中工作得很好。但它迫使用户在自己的电脑上生成图像。我希望用户只能下载图片。安装程序还应该使用dockerhub的自动构建来保持图像的更新。
我如何设置它来实现这一点呢?我应该给用户什么命令或文件来允许他们下载图像和运行容器?如果这是不可能的,我能做什么使它成为可能(分裂回购?复制码头文件?将中间映像发布到dockerhub并确保正确的构建顺序?不要使用dockerhub的自动构建?)
发布于 2018-08-21 16:47:49
要使用码头枢纽的自动构建,您需要每个Dockerfile构建一个映像,并有一个每个回购文件。图像名称来自源存储库名称( github /用户名作为坞映像用户名,github名称作为坞映像名)。多阶段构建在自动构建中工作,但每个Dockerfile只发布一个映像(构建的最终映像)。
您可以在您的CI中,甚至在您的本地机器上构建映像,然后推送到dockerhub。您只需要在dockerhub上有一个帐户,并在使用命令时登录到该帐户。在进行此推送时,不需要对GitHub repos进行任何映射,但是您的映像名应该以<dockerhub_user>/作为一种前缀(在https://docs.docker.com/docker-hub/repos/中解释)。如果它们是以不同的名称构建的,这是可以的,因为您可以在推送之前通过重新定位来重命名。通过这种方式,您也可以构建任何您喜欢的图像。
当您在dockerhub中有图像时,您只需使用表单image: <dockerhub_user>/<dockerhub_image_name>:<tag>在docker文件中引用它们。当用户执行docker-compose up时,图像将自动被拉出。
发布于 2019-02-05 07:05:14
以下是一些可以帮助您解决问题的提示和链接:
自动构建是一种部署映像的方便方法。
这部分很简单。你需要在码头集线器和吉特布的账户。您可以免费注册这些帐户。
当您在Docker上创建一个存储库时,您可以将它链接到您的Github存储库,以实现构建自动化。
建议:
Docker自动化构建非常灵活,使用了建钩。
这个部分有点棘手,因为我还没有找到最好的文档。如果拆分Dockerfile,也可能没有必要。
我已经使用hooks/build的钩子成功地创建了带有多个标记和目标的自动构建,但是在阅读了文档之后,您应该也能够使用hooks/post_build了。
您的钩子可以简单地构建正确的层并将标记推送到码头集线器。
对于您的存储库,应该如下所示:
#!/usr/bin/env bash
docker build --target lutece-mysql -t lutece/mysql .
docker push lutece/mysql如果您最终使用了hooks/build,您可能需要构建最后一个目标作为最后一步。
建议:
hooks/post_push上的钩子添加附加标记。这样,每个标记都应该将用户链接到同一个图像。例如:
#!/usr/bin/env bash对接标记lutece/tomcat:master lutece/tomcat:最新的停靠推送lutece/tomcat:最新的不幸的是,我还没有完成这个部分,所以我无法确定如何使它工作。
有了Docker中的存储库和一个工作的docker-compose.yml,您的客户端可能只需要在目录中运行带有docker-compose.yml文件的docker-compose up。码头组合应该从码头集线器拉出图像。
https://stackoverflow.com/questions/51947044
复制相似问题