繁体   English   中英

无法从主机连接到 Docker .net Core 31. SDK 容器

[英]Unable to connect to Docker .net Core 31. SDK container from host

我正在尝试从主机上的浏览器访问托管在 docker 容器中的 .net core webapi(Win 10 Pro 1903;使用 Linux 容器的 Docker Desktop 2.1.0.5)。

webapi 没有什么特别之处; 只是一个使用 .net core 3.1 sdk 的全新dotnet new webapi项目。

我可以通过 docker 交互式终端和 kitematic 访问 webapi,所以一切都在那里闪闪发光。 当我尝试从主机连接到容器时,事情开始出错。 从浏览器访问容器/ping 失败(使用 localhost、127.0.0.1 和容器 ip)。

我确保一切都更新了,重新配置了几次端口,甚至在 mac 上尝试过,结果相同。

这是docker文件

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/sdk:3.1
WORKDIR /app
COPY --from=build-env /app/out .

ENTRYPOINT ["dotnet", "webapi.dll"]

我不确定它是否是 SDK 映像的问题(我应该使用 nano 映像)还是 Kestral 配置的问题(我对此表示怀疑)。

任何建议都会很棒

编辑Docker-Compose

services:

  app:
    image: fooey/webapi
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:5001"

对于手动启动docker run -p 8000:5001 --name api webapi

所以,这个问题原来是几件事。

  1. 我使用的运行时映像是错误的,它不应该是 SDK
  2. 运行时(和 SDK)都覆盖 launchSettings.json 以使用端口 80 向 Wael Kdouh 和 Kendall Roden 发出警告

处理此问题的适当方法是使用以下 Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
ENV ASPNETCORE_URLS http://+:5000
COPY --from=build-env /app/out .

ENTRYPOINT ["dotnet", "webapi.dll"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM