gpt4 book ai didi

docker - 无法在指定端口上访问 ASP.NET Core + Docker

转载 作者:行者123 更新时间:2023-12-05 02:04:42 24 4
gpt4 key购买 nike

我无法访问其中运行 ASP.NET Core 3.1 应用程序的容器。目标是在端口 5000 上的容器中运行应用程序。当我使用标准 VS 配置文件在本地运行它时,我导航到 http://localhost:5000/swagger/index.html 以加载 swaggerUI .我想使用 docker 实现同样的目的。

重现我的问题的步骤:

  • 添加带有公开的 5000 端口和 ENV ASPNETCORE_URLS 变量的 dockerfile:

    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
    WORKDIR /app
    ENV ASPNETCORE_URLS=http://+:5000
    EXPOSE 5000

    FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
    WORKDIR /src
    COPY ["myapp/myapp.csproj", "myapp/"]
    RUN dotnet restore "myapp/myapp.csproj"
    COPY . .
    WORKDIR "/src/myapp/"
    RUN dotnet build "myapp.csproj" -c Release -o /app/build

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

    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "myapp.dll"]
  • 构建镜像

     docker build -t myapp .
  • 运行 docker 镜像:

     docker run myapp -p 5000:5000

使用特定的 docker 文件运行上面的命令会导致:

    [21:28:42 INF] Starting host.
[21:28:42 INF] Now listening on: http://[::]:5000
[21:28:42 INF] Application started. Press Ctrl+C to shut down.
[21:28:42 INF] Hosting environment: Production
[21:28:42 INF] Content root path: /app

但是,由于 ERR_CONNECTION_REFUSED -> 无法访问此站点,我无法使用 http://localhost:5000/swagger/index.html 访问容器。

我确实进入了容器以检查主机是否正在运行,使用:

docker exec -it containerId /bin/bash
cd /app
dotnet myapp.dll

导致以下错误的原因:

Unable to start Kestrel.
System.IO.IOException: Failed to bind to address http://[::]:5000: address already in use.

结论是使用了容器内部的端口,应用程序是事件的,只是无法从外部访问它。我不知道如何进入它。请指出正确的方向。

更新问题已解决,答案贴在下面。但是解释为什么需要它以及它如何工作会很好!

最佳答案

为了解决这个问题,我必须手动将“--server.urls”添加到入口点,如下所示:

ENTRYPOINT ["dotnet", "myapp.dll", "--server.urls", "https://+:5000"]

关于docker - 无法在指定端口上访问 ASP.NET Core + Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64234333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com