这篇文章我将带领大家进入一家新的领域,如何利用jenkins发布镜像到rancher里面
一.安装插件
登陆jenkins在插件管理器里搜索rancher安装rancher插件
二.添加rancher构建
这里其实我们也可以通过如下命令直接推送到镜像服务上。
mvn clean package docker:build -DpushImage复制代码
但是考虑的网络较慢,我们直接使用插件,内部直接访问rancher 会快很多
三.配置rancher信息
API Endpoint 在rancher这里可以找到
rancher API Key :
username为第一步获取的Access Key
password为第一步获取的Secret Key
id和Description不重要可以随意填
Rancher Environment Id:环境id,可以在rancher管理界面环境管理中获取
Service Name:格式为基础设施名称/服务名称,下图就是基础设施名称
点击进去就是各个服务名称
Docker Image:容器名称,可以使用jenkins变量做动态构建
至此,jenkins上构建完就可以调用rancher api进行容器发布和升级。
四.验证部署是否成功
查看jenkins控制台日志
登陆rancher 查看服务日志顺利升级完成
五.备注问题列表
问题一:
原因是maven不能识别 docker-maven-plugin 需要再setting.xml 的pluginGroups标签处中加上
<pluginGroup>com.spotify</pluginGroup>复制代码
如下,reimport就可以了
<pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups>复制代码
我的pom.xml引入docker插件的地方如下:
<groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version>复制代码
问题二:
o {}->unix://localhost:80: No such file or directory
Apr 06, 2020 11:07:51 AM org.apache.http.impl.execchain.RetryExec execute
解决方案:
1. 打开docker的远程api访问(参考:https://blog.csdn.net/csde12/article/details/70240721)
sudo vi /etc/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock复制代码
2. 重启守护进程
sudo systemctl daemon-reload sudo systemctl restart docker复制代码
3. Jenkins的全局变量中增加DOCKER_HOST=tcp://localhost:2375
问题三
org.apache.http.conn.UnsupportedSchemeException) caught when processing request to {}->tcp://192.168.218.24:2375: tcp protocol is not suppo…
解决方案:
<dockerHost>${docker.repository.host}</dockerHost>复制代码
tcp改成http协议就可以