欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

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

发布时间:2023/12/4 asp.net 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Dapr牵手.NET学习笔记:用docker-compose部署服务 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

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

首先要把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,目录结构如下:

其中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,如下:

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

paymentsystem1

paymentsystem1

总结

以上是生活随笔为你收集整理的Dapr牵手.NET学习笔记:用docker-compose部署服务的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。