【问题标题】:.net core api not getting started in docker.net core api没有在docker中启动
【发布时间】:2022-01-15 12:03:24
【问题描述】:

我有一个简单的 .net core api,我的 docker 文件看起来像这样。

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS base
WORKDIR /app
COPY Published .
ENTRYPOINT ["dotnet", "DemoApi.dll"] 

我正在使用以下命令启动容器 docker run demoapi:v1 -p 8600:80 我收到如下消息。

当我尝试使用 URL http://:8600 访问 API 时,我收到一条消息站点无法访问。我什至尝试使用端口 5000、80,但没有任何效果。 我在这里缺少什么。

【问题讨论】:

标签: docker api


【解决方案1】:

请更改您的 Dockerfile 并添加 ASPNETCORE_URLS,如下所示

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS base
ENV ASPNETCORE_URLS=http://+:80 
WORKDIR /app
COPY Published .
ENTRYPOINT ["dotnet", "DemoApi.dll"] 

参考:https://stackoverflow.com/a/59662573/2777988

【讨论】:

    【解决方案2】:

    Docker 的参数放在docker run 命令中的镜像名称之前。图像名称之后的任何内容都将成为容器的命令,并覆盖可能在图像中设置的任何 COMMAND。 port-mapping参数是Docker参数,所以需要放在镜像名之前。

    此外,您还可以使用 SDK 映像来运行您的应用程序。没关系,但是该图像没有将 ASPNETCORE_URLS 设置为 http://+:80,因此您的应用程序侦听端口 5000,因此您需要映射它,而不是端口 80

    docker run -p 8600:5000 demoapi:v1
    

    如果您使用“正确的”运行时映像 mcr.microsoft.com/dotnet/aspnet:3.1,则会设置 ASPNETCORE_URLS。然后你的应用会监听 80 端口,你应该映射它。

    您说您使用http://:8600 访问API。那应该是http://localhost:8600

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      相关资源
      最近更新 更多