我正在尝试部署带有swagger openAPI的.Net核心API。在Visual Studio的计算机上,它运行良好。我可以在以下地址访问它:localhost:5000 / swagger / index.html,但是当我尝试使用docker部署它时,我无法访问网页
.net应用程序似乎与sql数据库通信良好,两个容器的docker日志上都没有错误,但是当我转到web_API_container上“ docker inspect”命令指示的IPAddress时,找不到404页面。 IP地址是可以访问的(也可以使用ping操作),但是我无法访问swagger的网页。
这是我的docker-compose
version: "3"
services:
web:
build: .
ports:
- "5000:80"
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "password"
ACCEPT_EULA: "Y"
在这里,我的.net应用程序的Dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
EXPOSE 5000
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TestAPI/TestAPI.csproj", "TestAPI/"]
COPY ["Abstract/Abstract.csproj", "Abstract/"]
COPY ["ClassLibrary1/Entities.csproj", "ClassLibrary1/"]
COPY ["DataAccessLayer/DataAccessLayer.csproj", "DataAccessLayer/"]
COPY ["Services/Services.csproj", "Services/"]
RUN dotnet restore "TestAPI/TestAPI.csproj"
COPY . .
WORKDIR "/src/TestAPI"
RUN dotnet build "TestAPI.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "TestAPI.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TestAPI.dll"]
我还尝试在docker-compose中将端口80映射到80,而不是5000映射到80,因为我读到.Net核心应用程序在生产中位于端口80上,但效果不佳...
感谢您的帮助!