文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

2023-06-20 12:06

关注

本篇内容主要讲解“Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤”吧!

环境说明

Docker安装

卸载旧的 Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

更新 apt 包索引并安装包以允许 apt 通过 HTTPS 使用存储库

sudo apt-get updatesudo apt-get install \  apt-transport-https \  ca-certificates \  curl \  gnupg \  lsb-release

添加 Docker 官方的 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

安装 Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

通过运行 hello-world 验证 Docker 是否已正确安装。输出 Hello from Docker! 表示安装成功

sudo docker run hello-world

不同的系统安装方式可以查阅 docker 官方安装说明

Gogs安装

Gogs 是一款用 Go 语言开发的轻量级极易搭建的自助 Git 服务。 选择 Gogs 主要因为它相对于 Gitlab 动则几个G的内用暂用率来说轻太多了。Gogs 会大大减低系统消耗,跑起来也就占用100mb内存。我的 Gogs 是跑在群晖上面的,效果都是一样,都是在 Docker 中托管

拉取 Gogs 镜像

sudo docker pull gogs/gogs

创建 Gogs 文件挂载路径

mkdir -p /var/gogs

启动容器 6022 是 https,6080 是 http,可以通过 docker ps 命令来查看是否启动成功。

docker run -d --name=my_gogs -p 6022:22 -p 6080:3000 -v /var/gogs:/data gogs/gogs

容器启动后通过 http://xxxxxxxx:6080 进行 Gogs 的初始配置

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

数据库类型建议选择 linux 自带的 SQLite3 ,支撑十几个人左右的团队使用足够了。域名填写 Gogs 所在服务器的域名或者 ip 地址。http 端口号和容器内部端口一致,应用 URL 填写访问 Gogs 的域名端口或 ip 端口,点击安装后注册一个新用户登陆即可

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Gogs安装完成后新建一个 Demo 仓库稍后使用

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Gogs 官方文档

Docker中托管.NetCore服务

新建一个 WebApi 项目

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

项目中增加一个 DockerFile 文件并且简单配置

# 指定依赖版本FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /appCOPY . /publishWORKDIR /publish# 设置Docker容器对外暴露端口EXPOSE 80# 设置时区RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \    && echo 'Asia/Shanghai' >/etc/timezone # 程序入口ENTRYPOINT ["dotnet", "DemoWebApi.dll"]

发布Api服务,如果发布文件中没有 DockerFile 文件需要手动修改项目文件,发布成功后将发布文件 copy 到服务器指定的文件夹中

 <ItemGroup>        <None Update="Dockerfile">            <CopyToOutputDirectory>Always</CopyToOutputDirectory>        </None>    </ItemGroup>

进入服务器刚 copy 的发布文件根路径下,执行 docker build -t {REPOSITORY}:{TAG} . 命令 通过 DockerFile 来生成 Docker 镜像文件,REPOSITORY 是镜像的名字,TAG 是标签。譬如 docker build -t demo:v1 .

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

通过 docker images 命令来查看生成的所有镜像

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

镜像生成成功后就可以通过镜像创建并运行容器了。执行 docker run --name demoapi -dp 5009:80/tcp demo:v1 命令创建并运行容器
-d:后台运行容器,并返回容器ID;
-p:指定端口映射,格式为:主机(宿主)端口:容器端口,容器的端口就是你程序启动的端口,建议直接在项目中写死。
-- name:容器名字

执行后可以通过 docker ps 查看所有运行起来的容器状态,需要查看所有容器可以使用 docker ps -a 命令

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

用 postman 测试一下是否部署成功了

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

列举一些docker常用命令

到这里服务已经在 Docker 完成了托管,但是每次发布都需要 build 新的镜像,然后停止老的容器,在创建一个新的容器,无形中增加了工作量。Jenkins 可以替我们完成这些工作

Jenkins安装

Jenkins 是依赖 java 的,所以需要安装 java 的 sdk,这里选择 java8

sudo apt-get install openjdk-8-jdk

安装 LTS 版本的 Jenkins

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \    /etc/apt/sources.list.d/jenkins.list'sudo apt-get updatesudo apt-get install jenkins

查看运行状态 systemctl status jenkins 正常会输出如下内容

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Jenkins 默认端口是 8080,安装成功后通过 http://xxxx:8080 即可访问,第一步需要先解锁,管理员密码会在安装成功后输出,也可以通过命令 cat /var/lib/jenkins/secrets/initialAdminPassword

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

输入密码后进入初始化页面,选择安装推荐插件

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

插件安装进度,需要一些些时间

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

结束后创建管理账号登录即可,进入系统管理,选择插件管理,搜索gogs插件后安装。

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

安装后需要重启一下 Jenkins,访问链接 http://xxxx:8080/restart 后点击重启,或者通过执行 service jenkins restart 重启

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

为了方便执行脚本,需要让 Jenkins 以 root 用户来运行,编辑文件 vim /etc/sysconfig/jenkinsvim /etc/default/jenkins 取消 JENKINS_USER 注释,并把值设置成 JENKINS_USER="root" 后修改文件夹权限

chown -R root:root /var/lib/jenkinschown -R root:root /var/cache/jenkinschown -R root:root /var/log/jenkins

jenkins 常用操作

使用Jenkins自动化

因为需要在服务器上 build 项目,所以需要安装 .NetCore 环境,可以查阅 微软官方文档 自行安装

把新建的项目推送到 Gogs 仓库中后点击仓库高级设置

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

选择 Web 钩子,添加新 Gogs 的 Web 钩子

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

配置 Web 钩子,推送地址前面是 Jenkins 的访问链接,后面 job 名字可以自己定义,选择只有在 push 的时候触发钩子,也可以自己选定事件

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

添加后重新点击管理 Web 钩子,选择刚才新建的钩子,点击测试推送来验证是否正常,抛出的异常如果是 job 未定义说明钩子是正常的,如果是其他的异常可以查看推送地址是否正确,以及 Jenkins 上的 Gogs 插件是否正确安装

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

回到 Jenkins 页面,新建一个任务,任务名就是之前 Gogs 里面的 job 名字,选择构建自由风格的软件项目

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

添加仓库配置,Repository URL 是你的仓库地址,点击添加你的仓库凭据信息,最后指定操作的分支

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

构建选择执行shell脚本,脚本也可以放在服务器上这里调用就行,为了方便就直接写在这里

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

# 判断是否存在demo镜像是否存在docker images | grep demo &> /dev/nullif [ $? -ne 0 ]then   # 不存在不做处理echo "not existed demo"else    # 如果镜像存在默认认为容器也是在运行状态echo "existed demo"   # 停止删除容器和镜像    docker stop demoapi    docker rm -f demoapi    docker rmi demo:v1fi# 重新build后生成镜像并运行容器cd DemoWebApi/# 发布到到指定路径dotnet publish -c Release -o /publish# 进入路径生成镜像后启动容器cd /publishdocker build -t demo:v1 .docker run --name demoapi -dp 5009:80/tcp demo:v1

保存后点击立即构建验证一下,如果构建失败可以在控制台输出中查看详细构建过程和错误信息

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

回到 Gogs 的管理 Web 钩子页面重新推送,成功后 Jenkins 会自动构建发布,之后只要 Push 到 Master 分支就会自动发布

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤

总结

简单记录了自己折腾的全过程,Jenkins 和 Docker 还有很多功能,要在使用过程中慢慢了解。

到此,相信大家对“Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯