Docker部署.Net的WebAPI服务与Jenkins实现自动化部署

Docker部署.Net的WebAPI服务与Jenkins实现自动化部署+Gitee(基础的DevOps)

提示:自我记录,仅供参考


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

有问题可+v ThePeople577 解答

注意

Docker的源拉取失败的时候 ,要修改为国内的源,再次尝试运行
/etc/docker/daemon.json 文件内 没有就新建
{
“registry-mirrors”: [
“https://docker.hpcloud.cloud”,
“https://docker.m.daocloud.io”,
“https://docker.unsee.tech”,
“https://docker.1panel.live”,
“http://mirrors.ustc.edu.cn”,
“https://docker.chenby.cn”,
“http://mirror.azure.cn”,
“https://dockerpull.org”,
“https://dockerhub.icu”,
“https://hub.rat.dev”
]
}
//上面基本包含了一些常见的源提供。不满足自己加一下
配置完记得重启Docker
sudo systemctl restart docker
容器化部署
!!!!!!!!!这里的引号要改为英文的,发布的时候是英文的,显示的时候就是中文的了!!!!!!
在这里插入图片描述


提示:以下是本篇文章正文内容,下面可供参考

一、Docker安装

在CentOS 安装

//安装一些必要的工具,如yum - utils,它提供了yum - config - manager工具,并且安装device - mapper - persistent - data和lvm2用于存储驱动(可忽略)
sudo yum install -y yum-utils \
                    device - mapper - persistent - data \
                    lvm2
//使用yum - config - manager来设置 Docker 的稳定版存储库(可忽略)

sudo yum - config - manager \
    --add - repo \
    https://download.docker.com/linux/centos/docker - ce.repo

//安装
sudo yum install docker - ce docker - ce - cli containerd.io

//设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

//验证
sudo docker run hello - world

二、.net WebAPI项目生成docker 脚本,并部署

1.生成docker脚本

1、右键启动项,选择添加》docker支持
在这里插入图片描述
2、选择Linux,dockerfile。就会生成一个docker脚本文件,修改一下端口以外。基本上不用修改
在这里插入图片描述
3、在API同文件下创建一个脚本文件webapi.production
#!/bin/bash
docker ps -a | grep wpf_webapi | awk ‘{print $1}’ | xargs -r docker stop | xargs -r docker rm
docker build --rm -t duwenink/wpf_webapi:1.0.0 -f Dockerfile .
docker run -d --name wpf_webapi --restart=always --net host -v /home/logs:/app/logs duwenink/wpf_webapi:1.0.0
具体意思可以使用AI工具解读:
整体功能概述
这段脚本的主要目的是自动化地停止并删除名为 wpf_webapi 的 Docker 容器,然后重新构建一个新的 Docker 镜像,最后使用新构建的镜像启动一个名为 wpf_webapi 的新容器,并且设置该容器在各种情况下(包括 Docker 重启)都能自动重启。

4、将2个文件复制到外面一层。如图层
在这里插入图片描述

保存后,在服务器上拉取该项目代码即可

2、服务器上指定脚本,运行API服务

1、文件定位到脚本文件目录下,执行chmod +x [脚本名字]。将脚本改为可执行文件(会变色)
在这里插入图片描述

2、直接执行脚本文件即可。如图
在这里插入图片描述
输入docker ps查看运行情况
在这里插入图片描述

3、查看防火墙是否启动,没启动启动起来(所有操作基于 firewalld,如果使用的iptables软件不行)
sudo systemctl status firewalld 查看状态
sudo systemctl start firewalld 启动
打开对应端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙即可
sudo firewall-cmd --reload
查看占用端口的容器
docker ps | grep 8080
查看端口开启情况
sudo firewall-cmd --query-port=8080/tcp
查看所有被允许访问的端口
firewall-cmd --list-ports

3、补充

1、对于容器内时区的问题

在宿主机输入 date 获取时间,查看是否是东八区的时间
再进入容器内查看容器内时间,直接在Docker文件内设置

WORKDIR /app

# 设置语言环境为中文
ENV LANG=zh_CN.UTF-8 \
    LC_ALL=zh_CN.UTF-8

# 设置时区为东八区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


三、jenkins

1、拉取Jenkins镜像

docker pull jenkins/jenkins:lts

2、创建jenkins数据卷(为了持久化)

docker volume create jenkins-data

3、创建jenkins脚本,并修改为可执行脚本执行

#!/bin/bash

定义 Git 私人令牌和用户名

GIT_TOKEN=“gitee的私人令牌”
GIT_USERNAME=“登录名”

停止并删除现有名为 jenkins 的容器

if [ $(docker ps -aqf “name=jenkins”) ]; then
docker stop jenkins
docker rm jenkins
fi

启动新的 jenkins 容器

docker run -d
-u root
-p 8080:8080
-p 50000:50000
-v jenkins-data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
-v /home/wpf-demo-api:/home/wpf-demo-api \ #这里的映射目录注意得有.git文件。执行ls -a可查看(脚本内这一行注释去掉)
–name jenkins
jenkins/jenkins:lts

sleep 5

docker exec jenkins git config --global credential.helper ‘!f() { echo “username=‘ G I T U S E R N A M E ′ " ; e c h o " p a s s w o r d = ′ GIT_USERNAME'"; echo "password=' GITUSERNAME";echo"password=GIT_TOKEN’”; }; f’

在这里插入图片描述
chmod +X <脚本> 修改为可执行脚本文件

4、创建完成后 访问8080端口

在这里插入图片描述
进入服务器 查询密码
docker logs jenkins | grep “Please use the following password to proceed to installation:”
在这里插入图片描述
复制输入进网页后,安装推荐的插件即可(尽量全部安装成功再继续)
安装成功后创建用火即可。页面如下
在这里插入图片描述

5、与gitee结合自动化部署Docker的服务

1、先实现通过jenkins执行docker 内的执行脚本

1、新建一个任务 选择自由风格项目(FreeStyle project)
在这里插入图片描述
2、到里面后,下拉到下面 。选择新增的是执行 Shell后,在里面配置脚本。(脚本的执行可行性 可在服务器上进入jenkins内执行一遍,是否可以执行)。好了后就可以在jenkins里面手动执行版本发布
在这里插入图片描述

2、通过gitee提交关键字来触发任务构建

安装gitee插件在这里插入图片描述
1、配置需要拉取的gitee库的凭证
在这里插入图片描述
这里注意,我使用的是gitee,需要到gitee里面生成我的私人令牌
在这里插入图片描述
2、在新增的凭证里面填写如下。选择Secret Text后。将对应的Token填写进Secret内即可
在这里插入图片描述
3、配置gitee 在系统管理》系统配置 往下拉到gitee。填写刚才加的令牌和相关信息。测试连接成功后即可绑定完成
在这里插入图片描述

4、在新建的任务里面,gitee下拉选择,选择刚才配置的文件
在这里插入图片描述
5、选择下面的触发构建。需要在Gitee仓库里面配置发送bhook。确保网络上你的git仓库可以访问到jenkins
源码管理这配置源码地址
在这里插入图片描述

在这里插入图片描述
选中后下面有生成webhook密码 生成后保存即可
在这里插入图片描述

6、在gitee里面选择仓库》管理》Webhooks。填入相关信息即可。点击更新不报错即可
在这里插入图片描述
7、在之前的shell语句修改为。其中添加了一个参数。来判断是git提交还是手动触发的。需要添加一个参数。截图图下
在这里插入图片描述

脚本如下:
#!/bin/bash
echo “MANUAL_TRIGGER 的值为: $MANUAL_TRIGGER”

检查 MANUAL_TRIGGER 参数的值

if [ “$MANUAL_TRIGGER” = “true” ]; then
echo “手动触发构建,直接开始”
cd /home/wpf-demo-api/

git pull

cd /home/wpf-demo-api/WpfDemoAPI/

./webapi.production

else

获取最新提交备注

commit_message=$(git log -1 --pretty=%B)

检查提交备注是否包含 publish 关键字

if echo "$commit_message" | grep -q "publish"; then
    echo "提交备注包含 publish 关键字,开始构建"
    cd /home/wpf-demo-api/

    git pull
    
    cd /home/wpf-demo-api/WpfDemoAPI/
    
    ./webapi.production
else
    echo "提交备注不包含 publish 关键字,跳过构建"
    exit 0
fi

echo “非手动触发,略过”
fi

注意:!!!所有脚本执行的语句必须可以在服务器上执行。出现报错或者无效什么的,要一个一个去排查。最好是去服务器上排查一遍
在这里插入图片描述

总结

个人总结,仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值