首页 > 代码库 > DockerHub基于Github自动化构建
DockerHub基于Github自动化构建
Docker Hub上的自动化构建
关于自动化构建
自动化构建是一个特殊的功能,它允许您在 Docker Hub 上使用构建集群,根据指定的 Dockerfile
或者 GitHub 、 BitBucket 仓库(或环境)来自动创建镜像。该系统将从仓库复制一份,并根据以仓库为环境的 Dockerfile
的描述构建镜像。由此产生的镜像将被上传到注册表,并且自动生成标记。
自动化构建有许多优势:
- 你的自动化构建项目一定是准确按照预期构建的
- 在 Docker Hub 注册表上,任何拥有你仓库访问权限的用户都乐意浏览
Dockerfile
- 自动化构建保证了你的仓库总是最新的
自动化构建支持 GitHub 和 BitBucket 的私有和公有的仓库。
要使用自动化构建,你必须拥有经过验证有效的 Docker Hub 账户和 GitHub/Bitbucket 账户。
设置GitHub自动化构建
首先,你需要将 GitHub 账户链接到你的 Docker Hub 账户,以允许注册表查看你的仓库。
注:目前我们需要有读写权限以建立 Docker Hub 和 GitHub 的挂钩服务,这是GitHub管理权限的方式,我们别无选择。抱歉!我们将保护您的账户及隐私,确保不会被他人非法获取。
开始构建!登录到你的 Docker Hub 账户,点击屏幕右上方的 "+ Add Repository" 按钮,选择自动化构建。
选择GitHub服务
然后按照说明授权和连接你的 GitHub 账户到 Docker Hub。连接成功后,你就可以选择用来自动化构建的仓库了。
创建一个自动化构建项目
你可以用你的 Dockerfile
从你的公共或者私有仓库创建一个自动化构建项目。
GitHub子模块
如果你的 GitHub 仓库包含了私有子模块的连接,你需要在 Docker Hub 上添加部署秘钥。
部署秘钥位于自动化构建主页的 “Build Details” 菜单。访问设置 GitHub 仓库的页面,选择 “Deploy keys” 来添加秘钥。
Step | Screenshot | Description |
---|---|---|
1. | 你的自动化构建部署秘钥位于 “Build Details” 菜单的 “Deploy keys” 下。 | |
2. | 在你的 GitHub 子模块仓库设置页,添加部署秘钥。 |
GitHub组织
一旦你的组织成员身份设置为公开,对应的 GitHub 组织状态便会被公开在你的 GitHub 上。为了验证,你可以查看 GitHub 上你的组织的成员选项卡。
GitHub服务挂钩
按照以下步骤配置自动化构建的 GitHub 服务挂钩:
Step | Screenshot | Description |
---|---|---|
1. | 登录到 GitHub.com,并转到您的仓库页面,点击右侧页面“Settings”。 执行该操作要求你有该仓库的管理员权限。 | |
2. | 点击页面左侧的“Webhooks & Services”。 | |
3. | 找到 "Docker" 并点击它. | |
4. |
最后一步
相信很多新手看完上面的指南仍然云里雾里,留了最后一层窗户纸:在Github项目顶层目录添加配套的Dockerfile!
FROM ubuntu MAINTAINER Wei Zhou <cszhouwei@gmail.com> RUN apt-get update; apt-get -y upgrade RUN apt-get -y install g++ cmake git subversion RUN mkdir /home/git; cd /home/git; sudo git clone https://github.com/cszhouwei/cmake_demo.git -b master; cd cmake_demo; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release ../; make CMD ["/home/git/cmake_demo/buld/module_xxx/module_xxx", "--config", "/etc/module_xxx.conf"]上述Dockerfile位于我的cmake_demo示例项目,有兴趣的读者请自取!
Github:https://github.com/cszhouwei/cmake_demo.git
DockerHub:docker pull cszhouwei/cmake-demo
参考文献
https://github.com/widuu/chinese_docker/blob/master/SUMMARY.md
DockerHub基于Github自动化构建