docker - 将多个解决方案项目 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