首页 > 解决方案 > 将多个解决方案项目 Dockerize 到一个 dockerfile

问题描述

解决方案中有几个微服务:api、auth、filtering。我想知道如何在一个 dockerfile 和 docker-compose 中运行它们。

这是我所做的:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["ShoppingCart.API/ShoppingCart.API.csproj", "ShoppingCart.API/"]
RUN dotnet restore "ShoppingCart.API/ShoppingCart.API.csproj"
COPY . .
WORKDIR "/src/ShoppingCart.API"
RUN dotnet build "ShoppingCart.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ShoppingCart.API.csproj" -c Release -o /app/publish
    
WORKDIR /app
COPY --from=build /app/build .
ENTRYPOINT ["dotnet", "ShoppingCart.API.dll"]

码头工人组成:

version: '3.9'

networks:
  localdev:
   name: localdev

services:
  api:
   container_name: api
   build: .
   depends_on: [ mssql ]
   ports:
    - "8080:80"
   networks:
    - localdev

  ordering:
   container_name: ordering

  mssql:
   image: "mcr.microsoft.com/mssql/server"
   container_name: mssql
   hostname: mssql
   environment:
    SA_PASSWORD: "fA0bD7rO3iE1mU0w"
    ACCEPT_EULA: "Y"
   restart: unless-stopped
   networks:
    - localdev
   ports:
    - "1433:1433"
   expose:
    - 1433 

  rabbitmq:
   image: "rabbitmq:3-management"
   container_name: "rabbitmq"
   ports:
    - "5672:5672"
    - "15672:15672"

因此,我可以将 API 包装在 docker 中。怎么和别人一起做?例如,在解决方案中是 ShoppingCart.Auth

标签: dockerasp.net-web-apidocker-composedockerfile

解决方案


推荐阅读