ansh

Auto-Deploying .NET Core with Jenkins and Docker on Linux

Auto-Deploying .NET Core with Jenkins and Docker on LinuxSummary: The catch with Jenkins is that it compiles on the server, eating CPU and RAM during every build. It mostly works, but Azure DevOps or Alibaba Cloud Flow are the better options.
This article has no English version yet. The original Chinese text is shown below.

缺点:在服务器编译,编译时需要占用cpu和内存资源,基本可以废弃,可以考虑利用Azure devops或者阿里云效。


1:任意云服务器,轻量云比较便宜。

阿里云:https://www.aliyun.com/activity/1111/newuser1st?userCode=1vqzj9qj

腾讯云:https://curl.qcloud.com/t8vLvWQn

2:安装宝塔面板

宝塔面板官方地址


3:docker安装

进入宝塔-软件商店-全部-搜索docker-安装Docker管理器-选择最新版本


4:jenkins安装

4.1宝塔面板-文件 创建 /var/jenkins_home 目录

4.2宝塔面板-终端-执行命令

docker run \

  -u root \

  -itd \

  -p 5076:8080 \         

  -p 50000:50000 \

   -v /usr/bin/docker:/usr/bin/docker \

  -v /var/jenkins_home:/var/jenkins_home \

  -v /var/run/docker.sock:/var/run/docker.sock \

jenkins/jenkins:lts  


-p 5076:8080 \       5076端口自己任意填写


5:.net core添加Dockerfile

在起始项目右键,添加docker支持,所有都默认,检查WORKDIR /app语句,确认app目录在linux存在,修改目录或者创建目录

将Dockerfile放在根目录下,并不是在某个项目下,上传到git。

如果第六步执行失败,查看控制台输出,如果提示Dockerfile不存在,则说明文件放错位置,放在sln同一级目录。


6:jenkins配置

宝塔:/var/jenkins_home/secrets initialAdminPassword 查看密码

打开ip:5076, 输入密码,安装默认插件,新建任务,源码管理选择git,配置好地址和用户名密码

构建中添加shell,输入


image_version=`date +%Y%m%d%H%M`;

echo $image_version;

# 中止以前的docker container


CID=$(docker ps | grep "test" | awk '{print $1}')

echo $CID

if [ "$CID" != "" ];then

  docker stop $CID

  docker rm $CID

fi



#docker stop test;

# 删除这个container

#docker rm test;

# build镜像而且打上tag

docker build -t test:$image_version .;

docker images;

# 把刚刚build出来的镜像跑起来

docker run -p 8066:80 --restart always --name test-d test:$image_version;

docker logs test;


点击立即构建。


查看控制台输出,如果监听的不是80端口,将上面命令8066:80 换成对应端口

浏览器打开: ip:8066



执行命令: 使jenkins自动重启

docker update --restart=always jenkins