【发布时间】:2020-01-06 20:32:24
【问题描述】:
我正在尝试从主机上的浏览器访问托管在 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
【问题讨论】:
-
你在
docker run或docker-compose时映射了端口,对吧?你能说明你是如何在本地机器上启动容器的吗? -
@Matthew 刚刚更新了答案
-
这个问题与你的 docker 创建的 SDN 网络有关,因此你的容器使用哪个网络来相互连接和主机 1)主机,2)网桥 3)覆盖
标签: c# docker .net-core dockerfile