Windows系统下使用Jenkins自动化发布.NET core程序到Linux平台下利用Docker快速启动
准备工作:
Windows安装Jenkins 官网自行下载 https://jenkins.io/
Linux服务器一台,建议使用VM虚拟机完成,系统版本建议Centos7系列
Linux安装Docker CE版本,官网自行下载https://www.docker.com/
Window下载好压软件,因为该软件支持CMD命令,这里还需要修改一下本地的环境变量,右键【我的电脑】->【高级系统设置】->【高级】->【环境变量设置】->选择系统变量【Path】->点击【编辑】->点击【新建】,把好压的安装目录放进去。我好压的安装目录是:C:\Program Files\2345Soft\HaoZip
一切就绪后,打开jenkins,默认http://localhost:8080,如下
我们需要在jenkins插件管理中下载相关插件,然后构建的时候会利用这些插件
插件1:Git插件Git plugin
插件2:Scp远程上传插件 Hudson SCP publisher plugin
插件3:SSH插件 Publish Over SSH,
如下图直接搜索插件名称,点击安装就可以了。
Jenkins插件设置,进入系统管理->系统设置
找到【SCP repository hosts】上传插件设置位置:
Hostname:远程liunx服务器 IP地址
Port:端口(默认22)
Root Repository Path:文件存放目录
User Name:登入用户名
Password/Passphrase:密码
图例:
找到【SSH Servers】连接liunx服务器插件设置:
Name:别名,可以结合业务取
Hostname:远程liunx服务器 IP地址
Username:登入用户名
Remote Directory:连接默认工作目录
Passphrase / Password:密码
Port:连接端口(默认22)
图例:
完成插件配置后,创建项目,点击【新建】->输入项目名称->选择【构建一个自由风格的软件项目】->点击【OK】
图例:
配置项目,点击【源代码管理】->选择【Git】
图例:
选择【构建】->点击【增加构建步骤】->选择【Execute Windows batch command】
图例:
构建前工作,需要写的命令思路大纲是,使用dotnet命令,发布项目,然后压缩
例如:
切换CMD编码
chcp 65001
切换到项目Web目录
cd ./Boss.Web.Test/
还原项目get包
dotnet restore
生成项目检查是否可以生成成功
dotnet build
发布项目,发布前需要删除之前的发布文件和压缩包依次是
rd /s /q web-publish
del web-publish.zip
dotnet publish – o 指定发布目录
最后压缩发布的文件
HaoZipC a –tzip web-publish.zip “web-publish\* -r,
发布完成后
选择【构建后操作】->点击【增加构建后操作步骤】->选择【Publish artifacts to SCP Repository】,准备把发布压缩文件上传到远程linux服务器
图列:
下拉选择要上传服务器地址(刚才配置过的都在里面),点击【增加】,第一个上传的是我们的源代码压缩包,第二个是我们要生成docker的依赖文件
图列:
这里的docker依赖文件是我们.netcore项目需要打包成镜像的指令文件Dockerfile
例如:以下是最简单的打包.netcore镜像命令
将发布文件和dockerfile上传到远程linux服务器后,需要通过SSH远程执行命令
现在开始编写远程SSH所需要执行的命令
图例
需要写的命令思路大纲是,切换到发布文件目录,解压发布文件,打包镜像,上传镜像仓库,运行镜像
例如:
切换到发布文件所在目录
cd /home/web-publish
删除之前的发布文件
rm –rf web-publish
解压
unzip –o web-publish.zip
删除文件压缩包
rm –f web-publish.zip
生成docker镜像
docker build –t ${name}:${tag} ${dcokerfile所在目录}
停止之前运行的容器
docker stop ${容器}
删除之前的容器
docker rm ${容器}
运行生成的镜像
docker run –d –p 8002:80 –name ${容器名称} ${组织}/${仓库}:${标记}
点击保存,配置就完成了。
返回
返回首页看到刚配置好的数据,点击后面的构建就行了。
Docker 卷和挂载
由于容器的文件系统会随着容器删除也会删除,可以理解为容器的文件系统不是持久的。
所以需要数据卷或绑定挂载完成需要持久化的东西。
以下是卷和绑定挂载的一些概念
卷
卷是由Docker管理,非Docker进程不应该修改文件系统这一部分,卷是在Docker中保留数据的最佳方式。
创建卷命令:docker volume create --名称
将卷应用于容器的时候,此目录是装入容器的目录,类似绑定挂载的工作方式,除了卷由Docker管理与主机核心功能隔离。
删除未被容器使用的卷命令:docker volume prune
匿名卷在首次装入容器的时候未给出明确的名称,因此Docker为它们创建了一个随机名称,该名称在给定的Docker主机中保证是唯一的。除了名称外,命名和匿名卷的行为方式是一样的。
卷还支持使用驱动程序,这些驱动程序允许您将数据存储在远程主机或云提供程序上,以及其它可能性。
卷只能是目录,不能是单个文件,配置文件在主机文件修改后,容器会及时应用到,反之亦可。
使用命令:
$ docker run -d –p 8008:80
--name devtest \
--mount source=myvol2,target=/app \
组织/仓库名:版本
绑定挂载
可以存储在主机系统的任意位置,Docker主机或Docker容器上的非Docker进程可以随时修改它们。
主机目录必须是一个完整的路径,该文件在绑定过程中如果不存在会自动创建,它们依赖于具有特定目录结构的主机文件系统。如果你正在开发新的Docker应用程序,请考虑使用命名卷。你无法使用Docker Cli命令直接管理绑定装入。
注意:使用绑定挂载注意你可以通过容器中运行的进程修改主机文件系统,包括创建,修改,删除重要的系统文件目录或文件。
tmpfs
挂载仅存储在主机系统的内存中,永远不会写入文件系统。主要可以在容器的生命周期供容器使用,以存储非持久状态的敏感信息。
绑定这种方式,可以是文件和目录,经测试.net core绑定单个配置文件appsettings.json,在主机目录修改后,需要启动容器才会生效。
使用绑定挂载或卷的提示
1:如果将空卷装入容器中存在文件或目录的目录中,则会将这些文件或目录复制到卷中,同样,如果启动容器的时候指定尚不存在的卷则会自动创建一个空卷。这是预先填充另一个容器所需数据的好方法。
2:如果将绑定挂载或非空卷装入容器中存在的某些文件或目录的目录中,则这些文件或目录会被装在模糊,也就是说绑定挂载或非空卷会遮盖容器中的文件内容,隐藏的文件内容不会被删除或更改,但是在安装绑定挂载或卷的时候无法访问。
使用命令:$docker run
-d–p 8005:80
-it
\
--name
devtest
\
--mount
type=bind
,source
="$(pwd)"/target,target
=/app
\
组织/仓库名:版本
转载于:https://www.cnblogs.com/net666/p/10196563.html
Windows系统下使用Jenkins自动化发布.NET core程序到Linux平台下利用Docker快速启动相关推荐
- jenkin swindows启动_Windows环境下实现Jenkins自动化部署
详见:https://blog.csdn.net/Try_harder_every_day/article/details/79170065 Jenkins自动化部署: 几条具体的思路:1.开发人员将 ...
- linux代码windows能跑吗,能不能帮忙改一下下面这些代码,原来是在windows系统上运行的,要让它能在linux上终端跑。该如何处理...
当前位置:我的异常网» C语言 » 能不能帮忙改一下下面这些代码,原来是在windows系 能不能帮忙改一下下面这些代码,原来是在windows系统上运行的,要让它能在linux上终端跑.该如何处理 ...
- Docker中安装Jenkins实时发布.net core 项目(一)
Docker中安装Jenkins实时发布.net core 项目 安装docker 懒人篇 手动安装 dockerfile安装jenkins 常规安装jenkins jenkins的安装 搜索jenk ...
- (转)Thrift在Windows及Linux平台下的安装和使用示例
转载自Thrift在Windows及Linux平台下的安装和使用示例 thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的RPC(远程服务调用)框架 ...
- Docker中安装Jenkins实时发布.net core 项目(二)
Docker中安装Jenkins实时发布.net core 项目 防坑点 升级docker jenkins运行 运行命令 jenkins拉取git并构建项目 其他 查看发布文件 防坑点 升级docke ...
- linux系统搭建论坛,在Linux平台下搭建discuz论坛
在Linux平台下搭建discuz论坛 [日期:2007-11-08] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 环境 linux AS4 2.6.9 1.安装MySQL 使 ...
- clock在linux下单位,将clock_t转化为秒值在Windows与Linux平台下的差异
平时写测试程序的时候常常要计算程序执行的时间,尤其是最近练习Intel多核编程时,需要判断打开openmp参数与否的执行时间的比较. 通常代码是这样写的: #include clock_t start ...
- linux系统在物流公司的z作用,Linux平台下物流仓储系统的智能化设计.pdf
Linux平台下物流仓储系统的智能化设计.pdf 虞文鹏:Linux平台下物流仓储系统的智能化设计 网络与信息化 doi:10.3969/j.issn.1005-152X.2013.10.079 Li ...
- 【VP9】libvpx在Windows和Linux平台下的编译和vp9编解码器的命令行参数
=================================================================== 参考:https://www.cnblogs.com/endv/ ...
最新文章
- Linux下编译安装Boost1.66
- (5.1.5)引擎管理——多服务器管理之中央管理服务器(CMS)
- PAT (Basic Level) Practise:1017. A除以B
- Shell 与Python的交互
- DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
- fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
- 浪潮成立Inspur DevOps Lab:以应用开发和平台服务打造开发者生态
- 11.无限分类表的数据库设计
- 利用安卓手机的OTG共享有线网络
- RDPWrap帮助Win10家庭版开启远程桌面功能
- python web 开发从入门到精通 pdf_Python Web开发从入门到精通
- 手机无法连接wifi,提示正在获取ip, ip分配失败
- springboot 定时器使用方法之并行
- c语言乘方程序,C语言求幂计算的高效解法
- 数学模型学习——图与网络
- 【Mybatis入门20221024】
- 施工计算机综合应用能力实训,计算机综合应用能力实训报告.docx
- 产品经理(Product Manager)相关英文术语
- Android 实现三种响铃模式的切换
- 【Python】用vs code开发Python项目
热门文章
- python报表自动化系列 - 计算某年某个月的天数
- oracle 9.2 imp 表空间,如何imp到不同于原表空间的表空间?
- bat导出远程oracle数据,windows 任务计划 实现oracle远程 数据库备份
- 2.C++深入理解 面向对象部分1
- java 压缩 空目录_java zip压缩与解压-支持空目录,保留文件修改时间
- Linux文件导出到Windows乱码的问题
- RFM模型+SOM聚类︱离群值筛选问题
- OpenCV基本图形绘制之椭圆
- 在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
- SpringBoot中如何优雅的使用拦截器