使用Docker的“ ERR_CONNECTION_REFUSED” Angular和dotnet核心WebApi

时间:2019-11-18 11:11:58

标签: angular docker asp.net-core

我正在尝试对Angular / WebApi应用程序进行docker化,并在社区的帮助下,我终于设法构建了映像并能够在控制台中无错误地执行映像。但是我无法使用localhost导航到我的应用程序。

我的Dockerfile看起来像这样:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2.105 AS build
WORKDIR /src

# Copy csproj and restore as distinct layers
COPY ["Fightplan_v1/Fightplan_v1.csproj", "Fightplan_v1/"]
COPY ["Fightplan_v1.Autogenerate/Fightplan_v1.Autogenerate.csproj", "Fightplan_v1.Autogenerate/"]
COPY ["Fightplan_v1.Autogenerate.Test/Fightplan_v1.Autogenerate.Test.csproj", "Fightplan_v1.Autogenerate.Test/"]
COPY ["Fightplan_v1.Database/Fightplan_v1.Database.csproj", "Fightplan_v1.Database/"]
COPY ["Fightplan_v1.Helpers/Fightplan_v1.Helpers.csproj", "Fightplan_v1.Helpers/"]
COPY ["Fightplan_v1.Jobs/ConvertImagestoBlob/Fightplan_v1.ConvertImagestoBlob.csproj", "Fightplan_v1.Jobs/ConvertImagestoBlob/"]
COPY ["Fightplan_v1.Models/Fightplan_v1.Models.csproj", "Fightplan_v1.Models/"]
COPY ["Fightplan_v1.Shared/Fightplan_v1.Shared.csproj", "Fightplan_v1.Shared/"]
RUN dotnet restore "Fightplan_v1/Fightplan_v1.csproj"

# Setup NodeJs
RUN apt-get update && \
    apt-get install -y wget && \
    apt-get install -y gnupg2 && \
    wget -qO- https://deb.nodesource.com/setup_10.x | bash - && \
    apt-get install -y build-essential nodejs

# Copy everything else and build
COPY . .
WORKDIR "/src/Fightplan_v1"
RUN dotnet build "Fightplan_v1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Fightplan_v1.csproj" -c Release -o /app/publish

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=publish /app/publish .

EXPOSE 80
ENTRYPOINT ["dotnet", "Fightplan_v1.dll"]

运行docker build -f .\fp.dockerfile -t test .创建的图像没有任何错误。 运行docker run -p 5100:80 -it test将启动映像,并且在控制台中没有任何错误: enter image description here,但会发出XmlKeyManager警告: enter image description here

当我尝试转到http://localhost:5100时,我在浏览器中看到一个ERR_CONNECTION_REFUSED,控制台显示以下错误: enter image description here

我尝试直接转到172.17.0.1,而不是localhost。我也尝试使用https代替http,但这并没有给我上述unauthorized的错误,这应该意味着命中http是正确的,但是Angular应用程序没有呈现。

一切都在本地运行而无需docker。我可以通过Powershell中的dotnet命令dotnet restoredotnet publish发布应用程序。这将使应用程序在https://localhost:5000上运行。

我在Dockerfile中错过了下一步吗?

1 个答案:

答案 0 :(得分:0)

这很隐蔽,但完全是我自己的错。我在app.UseHttpsRedirection()中有一个Startup.cs。我删除了它,一切正常。