Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

原创
作者头像
IT架构圈
修改于 2018-10-11 16:53:54
修改于 2018-10-11 16:53:54
1.3K0
举报
文章被收录于专栏:IT架构圈IT架构圈

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

开始想用docker registry做私有镜像库,后来放弃了,知道的老铁应该知道这个玩意没有界面很不爽,后来选择了Harbor,还是通过vagrant 创建一个虚拟服务器,这样下来一共创建3个了,也就在生产环境下估计需要3个以上才可以完成整个的CICD持续化集成。前期的3个要求都是4g双核的,gitlab,gitlabci,Harbor 都是这样要求的。我的电脑i7处理器,16g内存让老铁看看跑起来后的效果。源码:https://github.com/limingios/docker/tree/master/No.11

通过vagrant 安装

代码语言:txt
AI代码解释
复制
vagrant reload

下载Harbor

  • 选择目前最新版本1.5.2 https://github.com/vmware/harbor/releases 我选择的是online版本,两种版本基本上差不多。 sudo yum -y install lrzsz #在windows下载的1.5.2 online 上传上去 rz
  • 解压harbortar xvf harbor-online-installer-v1.5.2.tgz
  • 安装 cd harbor sudo ./install.sh
  • 需要换成另外一种安装方法。sudo ./prepare
  • 真正的安装sudo docker-compose up -d

安装成功

访问机器:172.28.128.6 我是自动获取的ip

正常访问

用户名:admin

密码:Harbor12345

可以执行如下的命令进行停止和启动

停止

代码语言:txt
AI代码解释
复制
sudo docker-compose stop

启动

代码语言:txt
AI代码解释
复制
sudo docker-compose start

测试harbor

  • 启动服务sudo serivce docker restart cd harbor sudo docker-compose start
  • 修改参数docker默认是从官方拉取镜像的,并且从1.12版本之后,默认私有仓库是使用https来进行连接,所以我们这里需要进行一些相应的修改:
代码语言:txt
AI代码解释
复制
sudo vi /etc/docker/daemon.json
#写入{"insecure-registries":["172.28.128.6"]}

 sudo systemctl restart docker  

目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

解决方法:在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入

harbor 就是使用的80端口,根本不就需要在docker-compose.yml 配置什么5000端口。

代码语言:txt
AI代码解释
复制
#因为没配置http的过滤, 某人是使用https,就拒绝了。
connect: connection refused
#配置了上边的insecure-registries
server gave HTTP response to HTTPS client

最后登录,直接sudo docker login 私服地址不要加什么端口号 用户名:admin

密码:Harbor12345

push 镜像试试

  • 新建用户
  • 新建项目
代码语言:txt
AI代码解释
复制
#这个错误,就是未建立项目。
f9d9e4e6e2f0: Preparing 
denied: requested access to the resource is denied
  • push项目sudo docker pull busybox sudo docker tag busybox 172.28.128.6/idig8/busybox sudo docker login 172.28.128.6 -u idig8 -p 123456789 sudo docker push 172.28.128.6/idig8/busybox

终于成功了,前前后后大概怼了3个多小时,从10点对到了凌晨1点。吸口烟,百度里面太多坑爹了,很多人写文章就是直接复制,转载我不知道他到底实践没有,我这边都是边实践帮告诉大家咋用。感觉harbor真的比docker 仓库爽太多了,看到中文的那一刻我感觉我以后必须用这个放弃docker仓库。

远程连接harbor

  • 查找Docker的服务文件:登录到已经安装Docker的服务器,输入 systemctl status docker 查看Docker的service文件。
代码语言:txt
AI代码解释
复制
sudo systemctl status docker
  • 编辑docker.service文件:在ExecStart处添加 –insecure-registry 参数。sudo vi /usr/lib/systemd/system/docker.service
  • 重新加载service文件,重启docker服务。sudo systemctl daemon-reload sudo systemctl restart docker
  • 尝试远程登录sudo docker login http://172.28.128.6 -u admin -p Harbor12345

gitlab gitlab-ci harbor

通过gitlab-ci往harbor上打对应的镜像包

  • 修改 .gitlab-ci.yml 增加release,当打包的时候执行生成镜像并发送到远程harbor服务器上。

另外说明下,虽然咱们在crt编辑器连接linux的时候需要前面加上sudo,但是在script脚本的时候,不允许加入sudo,如果加了 就会报错。

代码语言:txt
AI代码解释
复制
stages:
  - style
  - test
  - deploy
  - release
  
pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
    
unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4
     
docker-deploy:
   stage: deploy
   script:
     - docker build -t flask-demo .
     - if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi
     - docker run -d -p 5000:5000 --name web flask-demo
   tags:
     - test1
   only:
     - master
docker-image-release:
   stage: release
   script:
     - docker login 172.28.128.6 -u idig8 -p 123456789
     - docker build -t 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG .
     - docker login 172.28.128.6 -u idig8 -p 1qaz@WSX3edc
     - docker push 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG
   tags:
     - test1
   only:
     - tags

这个执行后,就会自动进行pipline操作,然后通过merge到master分支

pipline 执行通过后,可以进行merge到master分支

合并到master分支,会自动触发pipline,多执行deploy操作

  • 如果我们想已经到master分支了,就光执行tag打包生成镜像怎么搞呢看来修改 .gitlab-ci.yml 增加except 在每个任务中。
代码语言:txt
AI代码解释
复制
stages:
  - style
  - test
  - deploy
  - release
  
pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
  except:
    - tags
    
unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7
   except:
     - tags

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4
   except:
     - tags
     
docker-deploy:
   stage: deploy
   script:
     - docker build -t flask-demo .
     - if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi
     - docker run -d -p 5000:5000 --name web flask-demo
   tags:
     - test1
   only:
     - master
    
docker-image-release:
   stage: release
   script:
     - docker login 172.28.128.6 -u idig8 -p 123456789
     - docker build -t 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG .
     - docker login 172.28.128.6 -u idig8 -p 1qaz@WSX3edc
     - docker push 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG
   tags:
     - test1
   only:
     - tags
  • 新建tagNew tag
  • 进入harbor看看

PS:实际上这个例子,就是特定版本的docker image的产生。一个版本的发布代表我们这个软件的稳定的版本的问世,接下来就可以进行对稳定版本的部署,我们对稳定版本的部署,稳定版本的部署具体是docker swarm还是k8s,最重要的是我们已经有了一个docker image,我们可以通过手动,或者自动的升级。update docker image 实现服务的不中断。

总体言之这几次的流程是:开发代码提交到分支后,分支下进行校验pipline,没有问题,进行deploy的,在deploy测试没有问题,打包tag,形成稳定的dockerimage版本。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
PS:实际上这个例子,就是特定版本的docker image的产生。一个版本的发布代表我们这个软件的稳定的版本的问世,接下来就可以进行对稳定版本的部署,我们对稳定版本的部署,稳定版本的部署具体是docker swarm还是k8s,最重要的是我们已经有了一个docker image,我们可以通过手动,或者自动的升级。update docker image 实现服务的不中断。 总体言之这几次的流程是:开发代码提交到分支后,分支下进行校验pipline,没有问题,进行deploy的,在deploy测试没有问题,打包tag,形成稳定的dockerimage版本。
IT架构圈
2019/07/08
6650
『中级篇』docker之CI/CD持续集成-CD演示(74)
PS:基本的流程就是开发人员提交代码,自动构建,然后可以在ci服务器上访问,整个流程基本就是这样。
IT架构圈
2018/10/10
7560
『中级篇』docker之CI/CD持续集成-CD演示(74)
PS:基本的流程就是开发人员提交代码,自动构建,然后可以在ci服务器上访问,整个流程基本就是这样。
IT架构圈
2019/07/08
5070
『中级篇』docker之CI/CD持续集成-整个流程串联(75)
PS:基本目前这种就是开发和测试,CICD的完整的流程。git的工作流,基于分支的工作流。部署到CI的服务器上。CD其实分几种情况,可能部署到生产的环境的机器,另外的一个单独系统,我们生产的环境的部署,一般情况是根据发布来部署的。今天这个基本是开发和测试,没有包括生产环境的。下次项目发布做部署,应该可以gitlab,gitlab-ci的什么流程
IT架构圈
2018/10/11
1.4K0
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)
源码地址:https://github.com/limingios/docker-cloud-flask-demo
IT架构圈
2018/09/27
2.7K0
『中级篇』docker之CI/CD持续集成—真实Python项目的CI演示(72)
修改Runner的 /etc/gitlab-runner/config.toml文件,在其中的 [runner.docker]下增加:
IT架构圈
2019/07/08
1.1K0
『中级篇』docker之CI/CD持续集成-整个流程串联(75)
PS:基本目前这种就是开发和测试,CICD的完整的流程。git的工作流,基于分支的工作流。部署到CI的服务器上。CD其实分几种情况,可能部署到生产的环境的机器,另外的一个单独系统,我们生产的环境的部署,一般情况是根据发布来部署的。今天这个基本是开发和测试,没有包括生产环境的。下次项目发布做部署,应该可以gitlab,gitlab-ci的什么流程
IT架构圈
2019/07/08
9380
gitlab-ci的简易入门—基于python项目的CI演示
使用github上开源的一个python的demo项目,地址为:https://github.com/imooc-course/docker-cloud-flask-demo 打开自己的gitlab,点击New project,把项目导入。
没有故事的陈师傅
2020/07/01
3.9K0
gitlab-ci的简易入门—基于python项目的CI演示
Gitlab-runner的CI与CD
这一篇,我们介绍一下使用Gitlab-runner进行持续集成与部署,经过以往的经验,我们使用Jenkins的时候,会在jenkins中安装一系列的开发环境包,比如:
公众号: 云原生生态圈
2021/11/15
9690
Gitlab-runner的CI与CD
GitLab CICD与Kubernetes实践·部署Flask Web服务
上篇?Gitlab CICD 与Kubernetes实践·部署GitLab Runner文章内通过Kubernetes已经完成Gitlab Runner的部署的,现在我通过一个实际的案例来测试和使用G
公众号: 云原生生态圈
2020/11/02
2K0
GitLab CICD与Kubernetes实践·部署Flask Web服务
『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)
PS:整个这个功能是否给你一个很大的想象空间,任何的软件的项目,可以通过ci-Pipelines方式,来定义自己的Pipelines,在测试,部署。很大很的发挥空间。都可以通过自定yml文件来实现。
IT架构圈
2018/09/23
7020
『中级篇』docker之CI/CD持续集成—GitLab CI服务器(71)
PS:整个这个功能是否给你一个很大的想象空间,任何的软件的项目,可以通过ci-Pipelines方式,来定义自己的Pipelines,在测试,部署。很大很的发挥空间。都可以通过自定yml文件来实现。
IT架构圈
2019/07/08
8520
Gitlab CI 持续集成的完整实践
借着公司代码库迁移到私有Gitlab的契机,我接下持续集成的工作,实现了对Python服务端代码的单元测试、静态代码分析和接口测试的持续集成。总体架构如下:
DevOps时代
2019/10/06
1.9K0
『中级篇』docker之CI/CD持续集成—真实JAVA-Maven项目的CI演示(73)
源码地址:https://github.com/limingios/gitlabci-maven
IT架构圈
2018/09/25
2.7K0
gitlab ci/cd 多项目流水线制品合并方案
首先需要在linux上安装 gitlab-runner 然后注册一个shell作为执行器的runner 该runner将应用于需要构建的项目
拿我格子衫来
2022/01/24
9010
gitlab ci/cd 多项目流水线制品合并方案
前端微服务架构下CI/CD构建单镜像落地方案
之前在团队中分享了qiankun微服务的单镜像的部署方案, 详细解析了单镜像部署的好处,但由于单镜像部署在构建时比较复杂,如果在上线时人工地去构建镜像,将是一个非常复杂,且容易出错的事情。所以本篇文章会介绍一种使用GitLab CI/CD来构建一个微服务单镜像的流水线,并应用于生产, 我称之为 aio 方案 all in one 。五个应用构建到一个docker镜像中。 ​
拿我格子衫来
2022/01/24
7500
前端微服务架构下CI/CD构建单镜像落地方案
图文详解k8s自动化持续集成之GitLab CI/CD
  如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
sunsky
2020/08/20
5K0
图文详解k8s自动化持续集成之GitLab CI/CD
Gitlab CI 集成 Kubernetes
首先将本节所用到的代码库从 Github 上获得:cnych/gitlab-ci-k8s-demo,可以在 Gitlab 上新建一个项目导入该仓库,当然也可以新建一个空白的仓库,然后将 Github 上面的项目 Clone 到本地后,更改远程仓库地址即可:
jwangkun
2021/12/23
1.6K0
Gitlab CI 集成 Kubernetes
Gitlab CI 搭建持续集成环境实现Docker自动化部署使用Harbor镜像仓库
本文简单介绍了持续集成的概念并着重介绍了如何基于 Gitlab CI 快速构建持续集成环境以及使用Docker实现自动化部署,主要介绍了 Gitlab CI 的基本功能和入门操作流程
小东啊
2019/06/26
4.1K0
Gitlab CI 搭建持续集成环境实现Docker自动化部署使用Harbor镜像仓库
基于GitLab+Docker+K8S的持续集成和交付
此文档主要说明怎样基于GitLab进行持续集成和持续交付,该持续集成与交付集成了gitlab-runner 、mvnw、Docker、harbor、k8s等技术,同时展示了在k8s平台利用EFK(elasticsearch,fluentd,kibana)技术完成了集群统一日志管理,使用kube-prometheus技术进行集群实时监控以及kube-dashboard管理集群中的应用部署,为了不引入网络问题,本环境的相关VPC机器已经关闭了本机防火墙。
互扯程序
2019/05/14
3.1K0
基于GitLab+Docker+K8S的持续集成和交付
推荐阅读
相关推荐
『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档