Dapr牵手.NET学习笔记:用docker-compose部署服务

上一篇聊到用两个物理机(一个win,一个mac)来部署dapr和服务 ,实现order调用pay的负载均衡。本篇说一下在windows上的docker部署这三个服务,达到与上一篇的效果。

三个服务的部署架构是这样的

50f7497e703ce528f2a2afd2bef03910.png

首先要把OrderSystem(服务端口80)项目docker化,Dockerfile内容为:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["/OrderSystem/OrderSystem.csproj", "OrderSystem/"]
RUN dotnet restore "OrderSystem/OrderSystem.csproj"
COPY . .
WORKDIR "/src/OrderSystem"
RUN dotnet build "OrderSystem.csproj" -c Release -o /app/buildFROM build AS publish
RUN dotnet publish "OrderSystem.csproj" -c Release -o /app/publishFROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "OrderSystem.dll"]

其实要把PaymentSystem(服务端口80)项目docker化,Dockerfile内容为:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["/PaymentSystem/PaymentSystem.csproj", "PaymentSystem/"]
RUN dotnet restore "PaymentSystem/PaymentSystem.csproj"
COPY . .
WORKDIR "/src/PaymentSystem"
RUN dotnet build "PaymentSystem.csproj" -c Release -o /app/buildFROM build AS publish
RUN dotnet publish "PaymentSystem.csproj" -c Release -o /app/publishFROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "PaymentSystem.dll"]

同时再添加一个docker-compose项目(右键 OrderSystem或PaymentSystem,Add,选择Container Orchestrator Support即可),命名为B2C,目录结构如下:

819a48fd982e12a57607ee9ede5f942a.png

其中docker-compose.yml内容如下

version: '3.4'services:ordersystem:image: ${DOCKER_REGISTRY-}ordersystembuild:context: ../dockerfile: /OrderSystem/Dockerfileports:- "3500:3500"volumes:   - ../OrderSystem:/OrderSystem   ordersystem-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "order", "-app-port", "80" ]depends_on:- ordersystemnetwork_mode: "service:ordersystem"paymentsystem1:image: ${DOCKER_REGISTRY-}paymentsystembuild:context: ../dockerfile: /PaymentSystem/Dockerfileports:- "3601:3500"volumes:   - ../PaymentSystem:/PaymentSystem         paymentsystem1-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80" ]depends_on:- paymentsystem1network_mode: "service:paymentsystem1"paymentsystem2:image: ${DOCKER_REGISTRY-}paymentsystembuild:context: ../dockerfile: /PaymentSystem/Dockerfilevolumes:   - ../PaymentSystem:/PaymentSystem            ports:- "3602:3500"paymentsystem2-dapr:image: "daprio/daprd:latest"command: [ "./daprd", "-app-id", "pay", "-app-port", "80" ]depends_on:- paymentsystem2network_mode: "service:paymentsystem2"

为了使PaymentSystem部署多个副本,我在docker-compose.yml中配置了paymentsystem1和paymentsystem2,它们使用的都是PaymentSystem项目的信息。关于docker-compose就不多说了。

进入B2C目录,启动三个服务,命令如下:

docker-compose up -d

就会在docker中启动三个服务,一个order,两个pay,如下:

5858b082e8d53b2aca712c959dc6664f.png

看一下结果吧,同样是postman,输入localhost:3500/v1.0/invoke/order/method/order,就会看到pay会轮询调用。

paymentsystem1

f3d37d40d877188ccd41a696289c372b.png

paymentsystem1

8c7b0b8b1a9f10350644a7e6936b8345.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程实战_真香!阿里P8耗时半年著作660页Java高并发与网络编程实战总结...

随着软件行业的飞速发展,互联网公司对开发者的技能要求也越来越高。而高并发、网络编程、微服务、海量数据的处理等技能,是每一个开发者进阶时的必学知识。为了帮助初级开发者快速掌握这些实用技术,本书以“理论+范例”的形式对各…

【译】在Asp.Net中操作PDF – iTextSharp - 使用表格

使用Asp.Net生成PDF最常用的元素应该是表格,表格可以帮助比如订单或者发票类型的文档更加格式化和美观。本篇文章并不会深入探讨表格,仅仅是提供一个使用iTextSharp生成表格的方法介绍,本文需要阅读我之前iTextSharp系列文章作为基础&#xf…

有些图,只要看错一眼就再也回不去了!

全世界只有3.14 % 的人关注了爆炸吧知识平时在网络上逛,你会发现有种图片,一旦看茬,就再也回不去了!今天就来集体复习一下:首先是这张著名的图,很可爱的小盆友但如果告诉你:那两个大黑点是鼻孔&…

2015年网页设计最佳颜色搭配的9种选择

2019独角兽企业重金招聘Python工程师标准>>> 2015年网页设计最佳颜色搭配的9种选择 还在为你的网站选用哪种色调发愁,难易选择吗?本篇为你总结了2015年国外网友设计最佳颜色搭配的9个方案,供你参考... 详细解读 和小伙伴们一起来吐…

EF Core的一个紧急bug,我这样修改

1背景今日在生产环境碰到如下错误ASP.NET MVC项目 Repository层中,Delete总是失败another entity of the same type already has the same primary key value具体错误提示:Attaching an entity of type ResearchManager.Models.BigTracker_UI.Product_Tr…

电脑home键在哪_如何灵活使用电脑键盘上的各个键

电脑上的键有很多但是你真的了解它们的用法么,今天笔者给大家分享一下电脑键盘上各个键的作用。区域一:共有13个按键,ESC,F1-F2。F1:帮助信息。F2:选定一个文件或文件夹。按下F2可以重命名。F3:…

svn强制注释 linux,svn强制要求提交注释

看了N多资料,不知道为什么我总是不成功。现在终于测试成功了,下面是实际操作过程~~使用bitnami一键安装了subversion,在使用中,希望开发人员提交时必须输入日志内容,可通过以下方法实现。首先转到相应的库的hook目录中…

身家4400亿美元的他,吃低于3美元的早餐,和2个老婆同居28年!

全世界只有3.14 % 的人关注了爆炸吧知识1930年8月30日,巴菲特出生在美国内布拉斯加州的奥马哈市。当时的美国还笼罩在经济大萧条的阴影中,还好父亲是位出色的股票掮客,这也让小巴菲特的童年过得顺顺利利。但小巴同学从小就不合群,…

怎么才能把项目做烂?!

上一篇聊聊《为什么被用户牵着鼻子走?刚参加工作做项目常说的一句话:没有困难,制造困难也得上。到不是真闲得蛋疼制造困难,而是表达解决困难的决心。2009年在某煤炭集团做了一个动态监测煤质煤量的实时系统,当时一般为…

电脑重新分区扩大c盘_两种方法,给电脑C盘增加10G的容量,电脑焕然一新

在我们日常的生活工作中,手机电脑已经成为了不可或缺的存在。然而当我们的手机电脑经过长年累月的使用之后,手机电脑都会变得很卡,在电脑上最直观的显示就是电脑C盘分区显示为红色,可用空间已经不够用了。我们知道,电脑…

PHP5中PDO的简单使用

PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的php_mysql.dll之类的了,那怎么办捏,我们…

redis在linux搭建集群,Linux/Centos 7 redis4 集群搭建

背景说明:项目初期使用AWS的ElastiCache Redis作为系统的数据缓存,近期由于数据量和QPS加大,导致Redis存在压力,进行了两次的单点垂直升级,缓解了目前的压力。项目组进行了数据和费用的评估,考虑到日后升级…

数学除了摧残祖国的花朵外,竟然还可以赢钱!

全世界只有3.14 % 的人关注了爆炸吧知识端午节假期结束了,知识君又可以开心地回到工作岗位上了。我热爱学习,也热爱工作。这两天,知识君又听到了“哼,数学除了摧残我们这些祖国的花朵之外,然而并没有什么卵用。”知识君…

rocketmq 顺序消费_10 分钟看懂消息队列 RocketMQ

RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于2017年9月25日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和…

[Tyvj1114 搭建双塔]

[题目来源]:VIjos [关键字]:动态规划 [题目大意]:用n块水晶搭建两个塔,要求双塔必须一样高,问最大能达到的高度为多少。 // [分析]:用f[i,j]表示使用前i个水晶,建起高度差为j的双塔时,较矮的那个塔的最大高…

linux lua socket编程,CentOs 安装lua,luasocket

一、centos安装Lua3)个人在这里选择使用5.1版本的*下载wget http://www.lua.org/ftp/lua-5.1.5.tar.gz--2013-10-14 16:23:17-- http://www.lua.org/ftp/lua-5.1.5.tar.gzResolving www.lua.org... 89.238.129.35, 2a02:40:41::5Connecting to www.lua.org|89.238.129.35|:80.…

一厕难求!NASA悬赏三万五千美元,只为一个能在月球上用的马桶

全世界只有3.14 % 的人关注了爆炸吧知识来源:大数据文摘作者:刘俊寰如今逐渐步入智能生活时代,智能化产品也逐渐普及到我们生活中,有的智能马桶,不仅可以识别大便监测你的生活状况,还可以识别肛纹辨别不同身…

我很高兴地宣布我正在编写第一本官方ABP图书

掌握ABP框架通过实施软件开发最佳实践来构建可维护的 .NET 解决方案从 ABP 框架的创建者那里学习如何构建现代 Web 应用程序主要特点使用 ABP 中的最佳工具构建强大、可维护和可扩展的软件解决方案了解如何在您的 Web 应用程序中实施 SOLID 原则和领域驱动设计了解 ABP 框架如何…

python join_python join 和 split的常用使用方法

python join 和 split的常用使用方法 python join 和 split方法的使用,join用来连接字符串,split恰好相反,拆分字符串的。 1.join用法示例 >>>li [my,name,is,bob] >>> .join(li) my name is bob >>>_.join(li) my_name_is_…

原来历史人物的英文名竟然叫这些,太好笑了吧哈哈哈哈哈

全世界只有3.14 % 的人关注了爆炸吧知识我们学了这么多年的英语你有英文名字吗?如果有一天,古人穿越到了现在那么他们的英文名字是……汉武帝:Woody汉文帝:Wendy▽朱棣:judy▽朱熹:Juicy▽周瑜:…