DockNet容器中的“dotnet run”导致无法访问url
问题描述:
我正在尝试使用ASP.Net Core和Docker设置开发环境。图像正确构建,容器运行正常。但是,即使我已指定端口为主机和容器的5000端口,但dotnet仍会在不包含指定端口的url上启动服务器,也不可访问。我期待听众是在:http://localhost:5000
DockNet容器中的“dotnet run”导致无法访问url
docker-compose up
结果:
Recreating netcore_ms1_1 ...
Recreating netcore_ms1_1 ... done
Attaching to netcore_ms1_1
ms1_1 | Hosting environment: Production
ms1_1 | Content root path: /app
ms1_1 | Now listening on: http://[::]:80
ms1_1 | Application started. Press Ctrl+C to shut down.
我的应用程序仅仅是一个样品dotnet new web
应用模板。这里是我的Dockerfile和码头工人,compose.yml文件:
Dockerfile
FROM microsoft/aspnetcore-build:2.0.0-jessie
WORKDIR /app
EXPOSE 5000
ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"]
泊坞窗,compose.yml
version: '3'
services:
ms1:
build: ./ms1
ports:
- "5000:5000"
volumes:
- ./ms1:/app:Z
有人能指出我我缺少什么?
其他问题
如何,我会继续在泊坞窗容器中运行的DOTNET看守工具,更具体地运行dotnet watch run
,留意是否有安装的卷./ms1文件的变化?
在此先感谢,任何帮助,非常感谢。
答
当使用microsoft/aspnetcore-build
或microsoft/aspnetcore
,图像是预先配置的,以暴露端口80启动你的容器这样的代替:
FROM microsoft/aspnetcore-build:2.0.0-jessie
WORKDIR /app
ENTRYPOINT ["dotnet", "run"]
在命令行,
docker run -p 5000:80
或者在搬运工-compose.yml,
ports:
- "5000:80"
此默认值来自definit离子的microsoft/aspnetcore
图像,它将ASPNETCORE_URL
环境变量设置为http://+:80
。
ENV ASPNETCORE_URLS http://+:80
见https://github.com/aspnet/aspnet-docker/blob/v2.0.0/2.0/jessie/runtime/Dockerfile#L4
好像它侦听80,但你要在'搬运工,compose.yml'访问5000最简单的解决方案可能仅仅有5000重定向到80。 – kichik
我试着改变docker-compose.yml中的端口,但结果是一样的。 –
端口改变了如果你从控制台执行'dotnet run --server.urls'http://0.0.0.0:5000''' '--server.urls'只有在显式启用从args中读取配置(当设置WebHost时)时才起作用。你添加了'.AddCommandLine(args)'?看看[WebHostBuilder。如何使用.NET-Core 2.0中的CommandLine设置URL地址](https://stackoverflow.com/questions/45710570/webhostbuilder-how-to-set-url-address-using-commandline-in-net-core-2 -0/45712524#45712524)如果需要样品。 – Set