使用GitLab自动创建 Docker img

GitLab 来管理 Dockerfile 是一件高效率的事情. 在每次更改 Dockerfile 之后, 都要手动 build 然后 push 到 registry, 有点重复性. 自己开了个 registry. 那就采用一种自动的方法来帮助我们做这种机械重复的工作.

使用了 GitLab CI, 并且自 GitLab 8.x 开始已经集成了 GitLab CI Server. 所以也不用额外部署 CI Server 了. 我们要做的工作就是部署一下 GitLab CI runner. 然后在 Dockerfile 的项目里配置一下 .gitlab-ci.yml告诉 GitLab CI runner 如何做就行了.

1、安装 Docker

在你想用来 build image 的机器上, 显然需要先装好 Docker. 参见 Docker官方文档.

2、安装 GitLab CI Runner

在用来 build 的机器上我们需要安装 GitLab CI Runner. 官方项目里面提供了很多安装说明. 可以直接找你对应的需要. 这里我就说一下我怎么直接在 Ubuntu 16.04 上安装的.(对应的官方文档)

1
2
curl -L https: //packages .gitlab.com /install/repositories/runner/gitlab-ci-multi-runner/script .deb.sh |  sudo  bash
sudo  apt-get  install  gitlab-ci-multi-runner

3、然后注册 runner:

1
sudo  gitlab-ci-multi-runner register

当中会让你填写一些信息. 例如你的 gitlab-ci coordinator 的地址和注册这个 runner 的 token, 这两个在你 GitLab 中可以找到. 具体的内容我忘记截图了. 关于 executor 的话, 我这里使用的是 shell, 因为我将 runner 直接运行在物理机的系统上, 想其能够直接使用 docker.

注册好后, 我们可以看 runner 的配置文件, 类似如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /etc/gitlab-runner/config.toml
concurrent = 1
  
`runners`
   url =  "http://gitlab.com/ci"
   token =  "******************"
   name =  "image builder"
   executor =  "shell"
   [runners. ssh ]
   [runners.docker]
     image =  ""
     privileged =  false
   [runners.parallels]
     base_name =  ""

关于这些参数可以在官方文档中找到. 注册好的 runner 在 GitLab 中如下图所示.

实际显示情况可能和上图有不同, 因为我已经将这个 runner 设置为 specific runner 了. 关于 runner 的说明可以参考 官方文档 configuring runner.

使用 GitLab runner 来 build docker image 的相关说明, 可以参考 官方文档 using docker build. 主要需要注意的是, 为了要让 runner 可以调用 docker 命令, 需要把 gitlab-runner 这个用户加入 docker 所在组.

1
sudo  usermod  -aG docker gitlab-runner

4、配置使用:

可以参考官方文档 Configuring project. 用的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tages:
   - build_image
   - push_image
  
before_script:
   - docker info
  
build_image:
   stage: build_image
   script:
     - docker build -t myregistry /aplusplus/ubuntu :16.04 .
  
push_image:
   stage: push_image
   script:
     - docker push myregistry /aplusplus/ubuntu :16.04

 stages 定义了你要做几步(stage) 以及他们之间的顺序. 默认每个 stage 都是在之前所有 stage 成功执行后才会执行. 每个 stage 可以包含多个任务(job), 例如上面的 build_image 和 push_image. 这里只定义了一个. 当每个 stage 有多个 jobs 时, 每个 jobs 会并行执行.

当你每次修改项目并 push 到 gitlab 后, runner 就会开始执行你配置的任务了



本文转自 喵来个鱼 51CTO博客,原文链接:http://blog.51cto.com/m51cto/1959183,如需转载请自行联系原作者
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/516731

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。