ASP.NET.Core --Jenkins+Docker

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
原文地址:https://www.cnblogs.com/lwqstyle/p/14125256.html