使用GitLab自动创建 Docker img-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

使用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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
GitHub Actions 的机器学习推理上线,推进测试部署高度自动化
在看到最近新推出的 GitHub Actions 后,我的第一个想法是创建一个简单的示例项目,在这个项目中,我们“部署”一个使用了这个新特性的机器学习模型。当然,这不是一个“真正的部署”,但是可用此模型在存储库中测试你的模型,而不需要任何额外的编码。
481 0
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据
代码问题,例如:foreach (DataRow drow in dt.rows){   dt.rows.remove(drow);)就可能出现你说的错误。在遍历集合成员的时候,不能删除成员。
1147 0
使用 iosOverlay.js 创建 iOS 风格的提示和通知
  iosOverlay.js 用于在 Web 项目中实现 iOS 风格的通知和提示效果。为了防止图标加载的时候闪烁,你需要预加载的图像资源。不兼容 CSS 动画的浏览器需要 jQuery 支持。浏览器兼容:IE7+, Google Chrome, Firefox, Opera, Desktop Safari, Mobile Safari — iPhone & iPad。
723 0
怎样用Docker创建我们自己的镜像
怎样用Docker创建我们自己的镜像 官方文档 Docker创建镜像 总共有两种方法:  1.用别人的镜像创建。  1.1、先下载一个容器  命令: docker pull training/sinatra  1.2、然后用容器启动这个镜像  命令:docker run -t -i training/sinatra /bin/bash  1.3、接下来就是给使用中的容器,添加自己需要的工具等,来组装自己的运行环境。
1750 0
《自己动手写docker》之namespace部门实验
动手写一遍,印象不一样! package main import ( "log" "os" "os/exec" "syscall" ) func main() { cmd := exec.
1090 0
9455
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载