1. 需要搭建一个私有的Docker仓库,以便安全的存储镜像
2. 需要一套自动化发布方案,实现代码到应用部署的自动化流程
大致流程如下
在java世界中有很多文章介绍了Docker+Jenkin的自动化部署方式,这次来看看如何用这一套工具实现.Net 应用的发布。
编写DockerFile
以Soa项目为例
Soa/sample/MainHost/Soa.GatewaySample.Web.Host/Dockerfile
搭建CI/CD服务器
CI/CD服务器用于将代码端到仓库的自动化发布,假设你已经拥有一台CentOS 7的服务器,IP地址为192.168.31.69,并且已经安装好了Docker和Jenkins。
安装私有仓库
设置启动方式为后台任务,端口为5000,并设置随docker服务一同启动
更改docker.service
在ExecStart命令后面添加参数,添加本机IP地址到registry中
重启docker服务
[可选]安装并运行whalerator,whalerator是一个docker镜像仓库可视化工具,可以提供类似Docker Hub的方式浏览镜像
测试
下载从dockerhub上下载一个仓库,再将他提交到私有仓库中
防火墙开启8081与8082端口以便外部环境可以访问
在同网段下的浏览器中输入 http://192.168.31.69:8081, 将跳转至管理页面
选择Anonymous匿名登陆,输入192.168.31.69:5000,点击Submit
可以看到soasampleauthorizedservicehost:latest已经存在于仓库内了
配置Jenkins
首先配置Jenkins的shell脚本权限
在文件末尾添加规则,这样执行sudo命令时将跳过root管理员密码验证
重启jenkins
在同网段下的浏览器打开http://192.168.31.69:8080, 打开Jenkins管理界面
Dashboard – 新建任务,选择“构建一个自由风格的软件项目”
这里暂且命名为test
在源码管理中填写Git仓库地址,并且填写正确的鉴权信息
在构建中添加一个“执行 shell” 步骤
在命令中输入以下内容
这些命令将在构建时,在源代码拉取后执行
- 将指定 ./sample/MainHost/Soa.GatewaySample.Web.Host/Dockerfile构建镜像,并命名为192.168.31.69:5000/soasampleauthorizedservicehost
- 将192.168.31.69:5000/soasampleauthorizedservicehost镜像推送至私有docker仓库
至此搭建CI/CD服务器工作结束。
测试和发布
返回Dashboard,在test项目下选择“立即构建”
等待构建成功
再次打开 http://192.168.31.69:8081, 打开Docker仓库管理页面,可以发现发布时间已更新
至此部署工作结束。
在客户机上需要安装Docker并且配置好IP地址,当然CI/CD服务器需要映射到一个公网IP地址上,以便客户的服务器拉取镜像