ps:开发环境是AspNet.Core3.1 WebApi项目, 服务器环境是centos7,gitblit。
思路:1、centos服务器搭建jenkins。
2、centos服务器安装dotnetcore 3.1的SDK。
3、centos服务器安装docker环境。
4、编写DockreFile文件,通过docker命令构建镜像,通过镜像构建容器。
5、在jenkins的workspace目录下,通过命令发布netcore api项目,到数据卷/home/app/publish(共享文件夹)下。
6、jenkins配置shell脚本实现发布代码到/home/app/publish(共享文件夹),重启容器。
1、搭建jenkins
1.1 先安装java jdk 下载命令如下
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
1.2 授权限
chmod +x jdk-8u131-linux-x64.rpm
1.3 安装
rpm -ivh jdk-8u131-linux-x64.rpm
1.4 下载jenkins的war包 上传到服务器上
http://mirrors.jenkins-ci.org/war/
1.5 在linux jenkins.war的目录下 后台启动jenkins网站
nohup java -jar jenkins.war --httpPort=8081 &
1.6 查看jenkins 后台进程
ps -ef | grep jenkins
2、安装dotnetcore SDK
ps: 如果网络不好,需切换到微软 yum源,然后yum update
2.1 下载dontnetcore 3.1 sdk
yum install dotnet-sdk-3.1
3、安装docker环境
3.1 下载docker-ce的repo
sudo curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
3.2 安装依赖
sudo yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.13-3.2.fc30.x86_64.rpm
3.3 安装docker-ce
sudo yum install docker-ce
3.4 启动docker
sudo systemctl start docker
4、编写dockerfile 构建镜像
4.1 编写dockerfile文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS build FROM build AS publish RUN dotnet publish "MyAPI.csproj" -c Release -o /app/publish WORKDIR /app EXPOSE 5000/tcp #解决服务器SSL协议版本问题 RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
4.2 上传dockerfile到 /home/app/publish 目录下,构建镜像(注意后面有一个点)
docker build -t myimage -f Dockerfile .
5、发布netcore api项目到数据卷(第一次手动发布,后续使用jenkins shell控制,重启容器即可)
5.1 cd到jenkins的工作目录(一般在【/root/.jenkins/workspace/项目名称/ 】 下) 发布到 app/publish 目录
dotnet publish "MyAPI.csproj" -c Release -o /app/publish
6.2 创建容器,数据卷的方式,对外开放8080 端口号,现在就可以测试是否部署成功
【docker run -d --name 容器名 -v 本地文件夹绝对路径:/app -p 8080:80 镜像名 dotnet 项目.dll --urls http://*:80】
例:
【docker run -d --name apicontainer -v /home/app/publish/:/app -p 8080:80 【镜像Id】 dotnet MyAPI.dll --urls http://*:80】
6、jenkins shell脚本
6.1 控制发布程序到数据卷,重启容器
#!/bin/bash echo----------------找到MyApi的发布目录-------- cd MyAPI echo----------------开始发布程序-------- dotnet publish "MyAPI.csproj" -c Release -o /home/app/publish echo----------------重启docker容器----- docker restart apicontainer