极狐GitLab上的Building风云 - 之Docker风云必胜 JIHULAB 101
接上一篇《极狐GitLab上的Building风云 - 之Java Maven雄霸天下》内容《Docker风云必胜》。
小白在极狐GitLab溜达的时候,又碰到了总舵主,赶紧拉住总舵主,上次说要教我Docker缓存优化,赶紧给我讲讲吧。
舵主:好吧,你还挺好学的,你知不知道咱们极狐GitLab天地会有Package仓库,用来管理制品的?
小白:当然知道啦,只是我没有使用过,这个可以怎么玩?
Package仓库
舵主开始给小白介绍极狐GitLab天地会的Package仓库:咱们Package仓库分两部分,Package和Container,我分别讲一下。
Package,可以存放我们打包好的制品,由于每个人修炼的武功并不相同,所以我们支持Maven、npm、NuGet、PyPI、Generic packages、Composer、Conan、Helm、Debian、Go、Ruby gems多种包注册。
Container,可以存放Docker镜像,无论是你自己Build的镜像还是你Pull的公共镜像,都可以 Push 到咱们的仓库中。
Pipeline优化
小白啊,上次我说到可以缓存优化,你之前写的例如centos:centos7,默认是去Docker Hub拉取镜像,这得依靠国际驿站网络,国际驿站太慢了,所以经常会超时,如果你先把国际驿站的 Docker Image Pull 下来,再 Push 到咱自己的仓库里,使用的时候是不是就飞快了?
所以,我们先把官方 Docker Hub 的拉取下拉,再推送到咱们自己的仓库,我举个例子,我自己维护的 https://jihulab.com/docker/hub 仓库,前面加上 registry.jihulab.com/docker/hub/,那么你之前写的单元测试阶段就可以改为:
stages:
- test
test:
stage: test
image: registry.jihulab.com/docker/hub/centos:centos7
services:
- name: registry.jihulab.com/docker/hub/mariadb:10.6.5
alias: "mariadb"
- name: registry.jihulab.com/docker/hub/redis:6.0.1
alias: "redis"
- name: registry.jihulab.com/docker/hub/elasticsearch:7.17.0
alias: "elasticsearch"
command: [ "bin/elasticsearch", "-Expack.security.enabled=false", "-Ediscovery.type=single-node" ]
variables:
MARIADB_DATABASE: renfeid
MARIADB_ROOT_PASSWORD: root
before_script:
- yum install -y wget java-1.8.0-openjdk* which
- curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
- rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
- yum install -y MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-common
- mariadb --user=root --password="$MARIADB_ROOT_PASSWORD" --host=mariadb $MARIADB_DATABASE
< environment/db/renfeid.sql --default-character-set=utf8
script:
- ./mvnw test -P gitlab -s environment/maven/settings.xml
这样就从咱自己仓库中获取镜像了,是不是快很多?
注意:你要注意Repo仓库的可见性,Package仓库默认跟随Repo仓库可见性,如果你是open开放的仓库,默认Package仓库也会被公开下载,如果要修改就去Settings总舵设置Container的可见性。
Docker风云必胜
小白说:果然快很多,谢谢总舵主指点。那既然可以存Docker镜像,是不是我可以在这里构建我自己的镜像,作为私有的Docker Hub了?
总舵主:当然了,这也是极狐GitLab提供的服务之一,你那么聪明,快去试试吧。
在上一篇的基础上再增加一个stages阶段:release发布阶段,构建Docker Image并发布到极狐GitLab Container仓库中。
经过小白一番探索,Dockerfile 就不说了,直接在上一篇文章基础上写 .gitlab-ci.yml,内容如下:
stages:
- release
release:
stage: release
image: docker:latest
services:
- docker:dind
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG .
- docker login --username=$CI_REGISTRY_USER --password=$CI_REGISTRY_PASSWORD $CI_REGISTRY_IMAGE
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
dependencies:
- package
以上内容解析:先选择 docker:latest 为运行环境,然后以 docker:dind 为基础镜像进行 Build 构建,$CI_COMMIT_TAG 就是获取 Git 中的 Tag 标签。
经过小白努力尝试,终于成功了,然后在自己的服务器上注册 registry.jihulab.com,就可以拉取 Docker Image 啦,看看我的成果:


到这里武功秘籍基本已经完善了,小白有点蠢蠢欲动,想去江湖上比划一下,这个时候被舵主拦住了,舵主说:小白啊,虽然你进步很快,但你知道不知道你的武功秘籍里可能有破绽,例如漏洞或弱点,咱天地会极狐GitLab也可以帮你审查漏洞哦,今天又不早了,我还要回总舵去开会,下次给你讲吧。
未完,后续请期待《极狐GitLab上的Building风云 - 之Security风云再起》。
商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。微信订阅号
扫码关注「任霏博客」微信订阅号- 你写得非常清晰明了,让我很容易理解你的观点。
- 感谢分享!拿走了~
- 您是说 UCClient 类接收来自Discuz的UCenter的消息吧,请求是来自 Discuz 的 UCenter吗?code 为 null 说明请求URL地址中没有 code 参数 (?code=xxx) ,确定是 UCenter 发起的请求吗?
- String code = request.getParameter("code"); code一直是null 这是为什么啊
- 你好,我想问一下如果是分析型的数据库要怎么制作docker镜像呢 是修改V008R003C002B0320版本号吗
- 可以的,我也正在开发分享的程序,可以邮件或群联系我都可以,关于页面里有联系方式:https://www.renfei.net/page/about 。
- 有破解软件的需要可以私下联系您吗?
- 您好,手机APP只是个客户端,用于数据呈现展示,数据均保存在服务器上,只留个APP没有任何用处,无能为力哦。
- 老哥 看你弄了这么多软件好厉害啊。 我有个软件 我买过几个小会员 没用几天 然后商家跑路了,软件服务器关闭了,连不上去 用不了。 你能做成一个打补丁版本可以本地用的么? 方便看下么?https://haodezhe.lanzouw.com/iD0f30h9joza 谢谢老哥!
- 您好,由于版权投诉和我国知识产权法的完善,我已经下架所有破解软件的下载链接了。
- 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1]
- github.renfei.net 不再完整代理 Github 页面改为代理指定文件
- 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)
- ChatGPT 开发商 OpenAI 买下极品域名 AI.com
- 火爆的 AI 人工智能 ChatGPT 国内注册教程、使用方式和收费标准
- 解决 SpringCloud 中 bootstrap.yml 不识别 @activatedProperties@ 参数
- Cron表达式书写教程搞定Linux、Spring、Quartz的定时任务
- 阿里云香港可用区C发生史诗级故障