极狐GitLab上的Building风云 - 之Docker风云必胜 JIHULAB 101
2022年03月19日 21:38:36 · 本文共 2,311 字阅读时间约 8分钟 · 3,561 次浏览接上一篇《极狐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 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.renfei.net/posts/1003516
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。
- 前后端分离项目接口数据加密的秘钥交换逻辑(RSA、AES)
- OmniGraffle 激活/破解 密钥/密匙/Key/License
- 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址
- Parallels Desktop For Mac 16.0.1.48911 破解版 [TNT]
- Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿
- CleanMyMac X 破解版 [TNT] 4.6.0
- OmniPlan 激活/破解 密钥/密匙/Key/License
- Sound Control 破解版 2.4.2
- Parallels Desktop For Mac 15.1.4.47270 破解版 [TNT]
- Parallels Desktop For Mac 16.0.0.48916 破解版 [TNT]
- 博客完全迁移上阿里云,我所使用的阿里云架构
- 微软确认Windows 10存在bug 部分电脑升级后被冻结
- 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列
- 比特币(BTC)钱包客户端区块链数据同步慢,区块链数据离线下载
- Java中说的CAS(compare and swap)是个啥
- 小心免费主题!那些WordPress主题后门,一招拥有管理员权限
- 强烈谴责[wamae.win]恶意反向代理我站并篡改我站网页
- 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型
- 新版个人网站 NEILREN4J 上线并开源程序源码
- 我站近期遭受到恶意不友好访问攻击公告