.Net Core WebApi拒绝在Docker容器中的连接
我正在尝试Docker与我已经在dotnet核心写的一个小的WebApi。
该Api似乎工作正常,因为当我运行它的networkingdotnet run
它正常启动,并可以在端口5000.但是,当我在Docker容器中运行它启动,但我无法达到暴露/映射的端口上。 我使用VirtualBox在Windows 10上运行Docker。
我的Dockerfile看起来像这样:
FROM microsoft/aspnetcore-build:latest COPY . /app WORKDIR /app RUN dotnet restore EXPOSE 5000 ENV ASPNETCORE_URLS http://*:5000 ENTRYPOINT ["dotnet", "run"]
我正在build造这样的容器:
docker build -t api-test:v0 .
并用这个命令运行它:
docker run -p 5000:5000 api-test:v0
运行命令的输出是:
Hosting environment: Production Content root path: /app Now listening on: http://localhost:5000
我也尝试了不同的方法来绑定url:
- 如
http://+:5000
,http://localhost:5000
,http://localhost:5000
,… - 通过CLI参数
--urls
/--server.urls
但没有成功。 有没有人看到我做错了或失踪?
- 确保你的服务使用
http://*:500
或类似的方式监听所有的端口(如果在运行时打印localhost
,它将不起作用)。 - 如果您使用VirtualBox设置docker环境并使用docker-machine,则需要使用运行docker容器的虚拟机的IP地址。 你可以通过
docker-machine ip default
获得IP。
Now listening on: http://localhost:5000
绑定到本地主机将不适用于您的scheme。 您需要将该应用程序绑定到0.0.0.0以使docker端口转发正常工作。 一旦你这样做,你应该能够到达虚拟机IP,端口5000的应用程序
我find了一个方法。 所有你需要做的是编辑launchSettings.json改为"applicationUrl": "http://*:5000/"
你的应用程序设置。 build立图像。 然后在运行镜像docker run -d -p 81:5000 aspnetcoreapp
后运行docker run -d -p 81:5000 aspnetcoreapp
获取容器的docker exec container_id ipconfig
IP地址。 然后在浏览器http:// container_ip:5000 / api / values 。 由于某种原因,它不工作http:// localhost:81仍然需要弄清楚为什么。
- Docker:在CLI上运行dotnet发布-o / output会导致非零的错误
- Docker组合生成错误 – 项目文件不存在
- 捕获404并redirect到wwwroot
- 如何在.NET核心应用程序泊坞窗图像中包含依赖关系?
- Docker与.NET Core无法联系
- 无法构build在Docker中引用PCL的ASP.NET Core应用程序
- 在启动时可以初始化Consul Key Value存储吗?
- docker容器即使在.net核心控制台应用程序中使用Console.ReadLine()也会立即退出
- 无论使用ITicketStore还是IDistributedCache,重新启动服务器时,身份validationCookie都会停止工作