如何通过docker-compose使.Net核心API,swagger和sql数据库进行通信

时间:2019-05-05 11:29:19

标签: .net docker docker-compose

我正在尝试部署带有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上,但效果不佳...

感谢您的帮助!

0 个答案:

没有答案