jenkins +docker私有仓库持续发布+持续部署

一小段学习时间的知识点独立的,需要一点一点连接组成网。
 
前要:
-开发提交git的时候要注明版本。
-在Jenkins中,实际分成了两部分,持续发布一个项目,持续部署是一个项目。分开是因为交付和部署可能不是同一个人。
-182是私有仓库的IP,170是需要部署的环境。
 
大概思路:
1、把打包好的镜像放到哪里去?        ------创建私有仓库。
2、把什么内容,如何放到私有仓库? -----拉取源码和对应的版本号,打包成镜像,推送到私有仓库。
3、如何拿到已经放好的?                   -----从私有仓库自动拉取并启动镜像。
4、预期结果?                                    ------输入访问地址即可访问。
 

一、私有仓库的创建

docker hub 在线存储库可以由任何用户发布和使用,在涉及隐私项目或者公司处在内网就不太适用了。这就涉及需要到私有存储库了。私有仓库基于registry镜像。
 

1、安装指令

      
docker pull registry
 

2、配置私有仓库地址

#1、执行编辑路径
vim /etc/docker/daemon.json
#2、加入"insecure-registries"
"insecure-registries":[192.168.0.182]
#3、按esc 输入: wq 保存
#4、保存之后重启一下
docker systemctl restart docker

 

3、创建容器

docker run -d -p 5000:5000 --name registry docker.io/registry
部分参数说明:
  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • --name:指定容器创建的名称

4、重新加载配置

sudo systemctl daemon-reload

5、重启一下docker

sudo systemctl daemon-reload

 

自此私用仓库 建立已经完成。如果想验证一下,可以通过docker push 进行推送,然后通过http://192.168.0.182:5000/v2/_catalog 来验证是否成功。
 
 

二、持续发布

1、勾选项目是参数化 ,选择git参数,填写参数名称(这个名称要确定好,在后面构建镜像的时候会用到)
 
0
 
2.输入源码地址
0
 
3.构建 shell
0
 
#构建镜像 
docker build -t 192.168.0.182:5000/ci:$tag .
#推送镜像到仓库 -- 交付版本
docker push 192.168.0.182:5000/ci:$tag

 

4、运行构建:
 
0
 
0
 
5、验证是否成功:
 
访问182上的仓库,已经能够看到我们打包好提交的镜像名称了。
0
 -------------------------------------
遇到的问题:
The push refers to repository [192.168.0.182:5000/ci]
Get https://192.168.0.182:5000/v2/: http: server gave HTTP response to HTTPS client

 

--解决:要在推送所接受的机子(vim /etc/docker/daemon.json)里面加上如下内容:
"insecure-registries": ["192.168.0.182:5000"]
 
然后再对docker进行重启
systemctl restart docker.service

 

 

三、持续部署

1、版本号参数:
     部署部分不用到git源码了,但是需要设置tag,就是发版的版本号。
     0
tag这个名字是要定义好的,在docker-compose中需要调用这个参数
2、构建:
  1、shell
# 复制docker-compose模板文件
cp /home/hww/.jenkins/workspace/jenkins+docker/docker-compose-jenkins-template.yml docker-compose.yml 

# 修改模板文件中的镜像版本
sed -i "s/{tag}/$tag/g" docker-compose.yml

# 上传到170,后续在170启动容器【要部署在哪个的容器】
scp docker-compose.yml root@192.168.0.170:/root/java/jenkins

  

  2.Send files or execute commands over SSH 设置
0
 
cd /root/java/jenkins
停止与删除旧容器
docker-compose down
拉取新镜像,并启动新容器
docker-compose up -d

  

3、启动构建
 
0
 
0
4、验证
 
docker image查看镜像
0
 
docker ps 查看已经启动的容器
0
 
浏览器启动访问:
0
 
至此,整个流程已经完成。
 

 
注意的是:
build 镜像名称也要规定好,docker-compose 里面有定义。所以两者要一样(imaage/container_name)
version: "3.3"
services:
  hrunmgr:
    # 这是jenkins发版打包的镜像,上传到私有仓库192.168.0.182
    image: 192.168.0.182:5000/hrunmgr:{tag}
    container_name: hrunmgr
    environment:
      - TZ=Asia/Shanghai
    #network_mode: host
    #只暴露2个端口
    ports:
      - "8080:8080"
      - "5555:5555"

    # 由于jenkins发版打包的镜像已经构建过代码,不用重复构建,因此去掉重复代码
    # build: .
    # volumes: # 映射目录, 方便读写
    #   - ./:/apps/HttpRunnerManager
    # #command: "/bin/sh", "-c", "while true; do sleep 100; done" # 让进程一直跑, 否则容器会exit
    # entrypoint: /apps/HttpRunnerManager/start.sh

  

 

posted @ 2022-03-25 18:02  ranh  阅读(1019)  评论(0编辑  收藏  举报