ABP vNext微服务架构详细教程——镜像推送
1. Jenkins搭建
为实现容器化部署,我们需要将代码打包成镜像并推送至容器仓库,我们可以选择自建容器仓库或者使用公有云服务商提供的镜像仓库。这里我们使用阿里云提供的免费镜像仓库。
代码打包和镜像仓库推送有很多种方式,在实际项目中,我推荐使用Jenkins实现自动化打包推送。
我们这里我们使用Docker部署Jenkins,首先,安装Docker,这里我使用的Ubuntu系统,并使用一键安装脚本:
curl -sSL https://get.daocloud.io/docker | sh
之后我们需要开启Docker的2375端口方法如下:
vim /usr/lib/systemd/system/docker.service
#修改ExecStart行为下面内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
加载配置项并重启Docker
systemctl daemon-reload
systemctl restart docker
之后使用Jenkins官方文档提供的部署命令如下:
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
运行成功后访问8080端口,可以进入Jenkins页面。
这里我们需要在宿主机上运行一下命令进入Jenkins控制台:
docker exec 【Jenkins容器ID】 -it /bin/bash
进入容器后使用以下命令获取第一次登录所需秘钥:
cat /var/jenkins_home/secrets/initialAdminPassword
登录后,依照默认选项配置Jenkins组件,并设置用户名密码,下次登录可使用新的用户名密码登录。
配置完成后进入管理面板,找到Manage Jenkins→插件管理→可选插件,搜索Docker,并安装。
安装完成后,在Manage Jenkins→系统配置中找到Cloud选项卡,点击“a separate configuration page.”并点击“Add a new cloud”按钮,选择docker。
点击“Docker Cloud details……”按钮,在Docker Host URI选项中填入docker地址如下:
tcp://【宿主机IP】:2375
点击“Test Connection”测试,通过后点击Save保存。
2. 配置Dockerfile
以基础服务中的产品服务为例,这里我们使用.Net官方提供的构建方式构建镜像,即将代码拷贝到.Net 6 SDK容器中执行打包和发布,再将发布后的文件拷贝到项目运行镜像中。
在Jenkins官方提供的Docker组件中,只能指定Dockerfile的目录,无法指定执行构建镜像的目录,所以我们需要让镜像构建的目录和Dockerfile一致。
在src\service\productmanager目录下添加Dockerfile文件内容如下:
1 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
2 WORKDIR /app
3 EXPOSE 80
4
5 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
6 WORKDIR /src
7 COPY . .
8 WORKDIR /src/host/Demo.ProductManager.HttpApi.Host
9 RUN dotnet restore -nowarn:msb3202,nu1503
10 RUN dotnet build --no-restore -c Release -o /app
11
12 FROM build AS publish
13 RUN dotnet publish --no-restore -c Release -o /app
14
15 FROM base AS final
16 WORKDIR /app
17 COPY --from=publish /app .
18 ENTRYPOINT ["dotnet", "Demo.ProductManager.HttpApi.Host.dll"]
这里需要注意第3行端口号和我们定义的服务端口号一致,第8行WORKDIR中/src后面的路径是启动项相对于Dockerfile所在目录的路径,第18行的dll为启动项的dll文件。
Demo中其他项目Dockerfile内容格式和此项目一致。
3. Jenkins配置
在Jenkins主菜单点击“New Item”创建单个服务发布流程
输入项目名称为productmanager并选择“Freestyle project”并点击“确定”。
在源代码管理中选择Git并在Repository URL处配置源代码git地址,这里我使用Demo在Gitee中的地址:https://gitee.com/lightnehum/abp-microservice-demo
如果GIt地址需要用户名密码,则在Credentials选项卡中点击添加,输入用户名密码并选择此项。
在“构建”选项卡中点击“增加构建步骤”,并选择“Build/Publish Docker Image”。
在Directory for Dockerfile输入框中输入:
/var/jenkins_home/workspace/productmanager/src/service/productmanager
此地址是Dockerfile在Jenkins容器中的地址,其中/var/jenkins_home/workspace为固定目录,productmanager为Jenkins地址,后面为启动项所在目录(Dockerfile所在目录)相对于总项目目录的地址。
“Cloud”选择我们在第一章节中配置的“Docker”。
这里我使用阿里云提供的免费镜像仓库,登录阿里云控制台,进入容器镜像服务,在实例列表中选择个人实例。
在仓库管理→命名空间中添加自己的命名空间。
在仓库管理→镜像仓库中添加镜像仓库名称为projectmanager,命名空间选择刚才创建的命名空间,仓库类型选择私有,点击“下一步”,代码源选择“本地仓库”,并点击“创建镜像仓库”。
创建完成后在仓库的基本信息中找到公网地址,并将内容复制到Jenkins之前步骤“构建”选项卡的Image输入框中。
继续编辑Jenkins“构建”选项卡,在Registry Credentials选项中,我们需要添加并选择阿里云镜像仓库的用户名密码。
将选项卡中的复选框:Push image、Clean local images、Attempt to remove images when jenkins deletes the run、Disable caching、Pull base image全部勾选。
点击保存完成Jenkins中产品管理服务发布配置。
点击“立即构建”可从git中拉取代码并将产品管理服务推送到阿里云镜像仓库。
其他服务可依照相同方法创建Jenkins发布流程将镜像推送至镜像仓库。
ABP vNext微服务架构详细教程——镜像推送的更多相关文章
- [Abp vNext微服务实践] - 添加中文语言
简介 abp vNext中提供了多语言功能,默认语言是英文,没有提供中文语言包.在业务开发中,定义权限后需要用中文的备注提供角色选择,本篇将介绍如何在abp vNext中加入中文语言. step1:添 ...
- [Abp vNext微服务实践] - 文章目录
简介 ABP vNext是volosoft的新一代框架,ABP(vNext)完全使用.NET CORE和DDD(领域驱动)打造,目前GitHub已有6K+次提交,发布版本超过40次,Nuget包下载量 ...
- [Abp vNext微服务实践] - 服务通讯
简介 服务通讯是微服务架构中必不可少的功能,服务通讯的效率决定了微服务架构的优略.常用的微服务通讯策略有两种,分别是rpc.http,其中rpc以gRpc框架为代表使用者最多.abp vNext微服务 ...
- 基于 abp vNext 微服务开发的敏捷应用构建平台 - 项目介绍
缘起 目前使用ABP框架已经将近3年了,大大小小的项目也陆陆续续做了很多.由于现有信息系统的架构模式是在底层的技术平台上直接构建信息系统并采用技术主导,使用业务无关的编程工具来开发信息系统的缺陷使得系 ...
- [Abp vNext微服务实践] - 启动流程
前几篇分别介绍了abp vNext微服务框架和微服务CI/CD环境搭建,本篇开始介绍vNext微服务框架的开发环境搭建. 环境准备 官方介绍的系统架构图如下: 上图中身份服务和网关服务已经集成在系统中 ...
- [Abp vNext微服务实践] - 业务开发
前几篇分别介绍了abp vNext微服务框架.开发环境搭建和vue element admin前端框架接入,在vue element admin中实现用户角色管理基本功能后就可以开始进行业务开发了,本 ...
- [Abp vNext微服务实践] - 前后端分类
一.前景 abp vNext是ABP 开源 Web应用程序框架,是abp的新一代开源web框架.框架完美的集成.net core.identity server4等开源框架,适用于构建web应用程序和 ...
- abp vNext微服务框架分析
本文转载自:https://www.cnblogs.com/william-xu/p/11245738.html abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了 ...
- [Abp vNext微服务实践] - 框架分析
一.简介 abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.n ...
- [Abp vNext微服务实践] - 租户登录
简介 Abp vNext微服务授权验证基于ids4,实现租户登录需要在授权服务中获取token,和之前的介绍的登录方式一样,只是多了tenant参数.本篇将介绍在Abp vNext授权服务中启用多租户 ...
随机推荐
- 国际版Office365客户端配置
Email Provider IMAP Settings POP Settings SMTP Settings Microsoft 365 Outlook Hotmail Live.com Serve ...
- element-ui中el-table设置多选checkbox时,selection-change重复执行,以及选不中问题
项目中使用了elementUI中el-table的选择框.在另外一个地方展示选中的行的数量.设置显示数量之后,选择框就无法选中,change事件执行两次. 解决办法:给el-table设置row-ke ...
- java基于ssm框架开发的视频论坛网站源码
简介 Java基于ssm开发的视频论坛网站,普通用户可以浏览视频搜索视频评论点赞收藏视频,关注用户.还可以浏览新闻,发布帖子到论坛. 演示视频 https://www.bilibili.com/vid ...
- C# 笔记--Sendkeys winform窗体控件回车及全选
SendKeys.Send() 向活动应用程序发送击键 SendKeys.SendWait() 向活动应用程序发送给定的键,然后等待消息被处理 这两个方法可以发送组合键,需要注意的是字母按键应为小写. ...
- Win10家庭版安装docker desktop
1.开启Hyper-V在桌面新建hyperv.cmd文件,内容如下: pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*H ...
- 在vite中怎么批量注册组件
1. 在webpack中使用require来获取组件 / 参数:1. 目录 2. 是否加载子目录 3. 加载的正则匹配 //匹配当前文件夹下的所有.vue文件 注册全局组件 const importF ...
- CICD中一个巨头--jenkins
持续化集成,发布离不开CICD,CICD中有最重要的一个程序就是jenkins,本章主要讲jenkins部署和建立项目任务 jenkins的出现,大大的提高了代码上线问题,通过图中可以看出,开发人员通 ...
- STM32F4 HAL库中是如何实现UART IO配置的?
1.配置串口IO.中断等底层的东西需要在用户文件中重写HAL_UART_MspInit函数2.hal库是在stm32f4xx_hal_msp.c文件中重写的HAL_UART_MspInit函数,分析如 ...
- 尝试在Ubuntu中安装Emacs遇到的问题
出现具体问题 今日学习安装emacs在Ubuntu19.04当中 安装详见下方帖子: 链接: 如何在Ubuntu中安装Emacs. 安装遇到问题,即 sudo add-apt-repository p ...
- JS学习-给Canvas上下文设置样式
给Canvas上下文设置样式 <canvas class="myCanvas" width="700" height="500"> ...