【发布时间】:2022-01-18 23:29:43
【问题描述】:
我写了一个小演示来了解微服务和 DDD。这是文件结构。
├───.dockerignore
├───docker-compose.yml
├───Dockerfile
├───MicroserviceDemo.sln
├───MicroserviceDemo.Application
│ ├───MicroserviceDemo.Application.csproj
│ └───...
├───MicroserviceDemo.Domain
│ ├───MicroserviceDemo.Domain.csproj
│ └───...
└───MicroserviceDemo.Infrastructure
├───MicroserviceDemo.Infrastructure.csproj
└───...
如果我运行 docker compose,容器运行良好,但导航到 localhost:5000/swagger 时会出现 404。
我尝试在应用程序目录中创建另一个 dockerfile(使用 VS docker 工具),这导致运行该容器时行为正常(我得到了 swagger ui)。该应用程序在没有直接在我的本地运行 VS 的情况下进行调试时也可以正常工作)。
我不确定问题出在哪里。
Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MicroserviceDemo.Application/MicroserviceDemo.Application.csproj", "MicroserviceDemo.Application/"]
COPY ["MicroserviceDemo.Infrastructure/MicroserviceDemo.Infrastructure.csproj", "MicroserviceDemo.Infrastructure/"]
COPY ["MicroserviceDemo.Domain/MicroserviceDemo.Domain.csproj", "MicroserviceDemo.Domain/"]
RUN dotnet restore "MicroserviceDemo.Application/MicroserviceDemo.Application.csproj"
COPY . .
WORKDIR "/src/MicroserviceDemo.Application"
RUN dotnet build "MicroserviceDemo.Application.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MicroserviceDemo.Application.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MicroserviceDemo.Application.dll"]
docker-compose.yml
version: '3'
services:
infrastructure:
image: "mcr.microsoft.com/mssql/server"
container_name: microservice-demo-database
restart: always
environment:
SA_PASSWORD: "Your_password123"
ACCEPT_EULA: "Y"
ports:
- 5432:5432
rabbitmq:
image: rabbitmq:3-management
container_name: microservice-demo-rabbitmq
ports:
- 5672:5672
- 15672:15672
environment:
- RABBITMQ_DEFAULT_USER=user
- RABBITMQ_DEFAULT_PASS=password
api:
image: microservice-demo:latest
build: .
container_name: microservice-demo-api
restart: always
depends_on:
- infrastructure
- rabbitmq
ports:
- 5000:80
- 5001:443
【问题讨论】:
标签: asp.net .net docker .net-core microservices