DTo*_*odd 8 asp.net visual-studio docker
我一直在使用 Docker 开发 ASP.NET 应用程序,当我通过 Visual Studio 启动它时,它运行得非常好!但是,如果我尝试从命令行(或 powershell,或 VS 的 CLI/Powershell)运行任何内容,它会运行,但它生成的容器会拒绝所有连接。
我在安装了 Docker Desktop 的 Windows 10 NT 上尝试运行 ubuntu:18.04 映像(我也尝试过 Alpine、ubuntu:16.04)。
重现步骤:
- 在 Visual Studio 中创建默认的 ASP.NET 应用程序
- 添加 Docker 支持
- 选择“Docker”运行
-打开浏览器,导航到本地主机:[YourPort]
-成功!按预期工作。
然后,使用相同的图像或下载的图像(我试图dockersamples/static-site确认这不是特定项目的问题):
-打开CMD
docker run -p [HostPort]:[ContainerPort] [SameImageVSUses:tag]-在不同的端口上运行
-看到docker ps显示两个容器彼此相邻运行
- 打开浏览器(Firefox),出现错误
The connection was reset
更新
我更改了 ASP.NET 应用程序的程序类以使用 0.0.0.0 而不是 localhost,我相信这是必要的,但现在我明白了
Secure Connection Failed
PR_END_OF_FILE_ERROR_
如果我curl localhost:[MyPort],我得到(52) empty reply from server
/更新
好吧,也许 Visual Studio 做了更多我不知道的事情。
一点点挖掘表明是的,它引发了大量额外的争论!使用复制/粘贴命令 Visual Studio 确实给了我...完全相同的错误。
澄清一下,容器仍然从命令行运行docker inspect,我可以通过 ssh 登录它们(事实上,VS 启动的容器和 CMD 启动的容器docker inspect除了绑定到的网络地址之外是相同的)。在构建和启动容器的过程中,我根本没有收到任何错误消息,因此,如果容器的某些部分出现故障,它会默默地执行。
我对 Docker 比较陌生,但我似乎找不到解决这个问题的方法,甚至找不到背后的原因。Visual Studio 正在做什么而我没有做什么?我已经尝试了我所知道的一切,我什至不得不擦拭我的机器(无关),当我重新安装所有东西时,发生了完全相同的事情。我的直觉告诉我这是我机器上的东西,但是 VS 启动的机器也应该失败,对吗?
如果我正在运行 CLI 东西,我找不到任何告诉我打开魔法开关的东西,并且我对 dockerfile 或命令参数所做的任何操作似乎都不起作用。我从未使用过 VirtualBox 或 Docker Toolbox,这不应该是一个被旧程序搞砸的奇怪配置,因为从 Visual Studio 启动时它工作正常!啊啊!
我希望这确实是一个我没有打开的神奇开关,否则有一些非常基本的东西我不明白我正在使用的东西。
谢谢你的建议,最后结果是相当令人沮丧的。我认为这是两个问题的结合:
这些东西可能会给其他人带来问题,但我错了,这对我不起作用
首先也是最重要的,无论多少 Docker 配置都不会告诉您的网站侦听容器内的任何内容。我相信当我最初尝试大多数修复时,该网站没有监听任何内容。
真正的问题是 .csproj Properties 文件夹中的 launchSettings.json 显然覆盖了命令行中的参数!
还记得我说过的“……与第一个一起运行……”吗?这意味着我从未在正确的端口集上运行该网站。显然,-p 8001:443 -e ASPNETCORE_HTTPS_PORT=443不足以让站点侦听 443。您还必须sslPort在 launchSettings.json 中进行设置。我想这就是生活。
这就是最终起作用的
docker-compose up我在解决方案目录中运行。就是这样。我在VS中查看时没有看到a docker-compose.yml,所以我没有考虑它,但这只是因为VS不显示解决方案级别的项目。我猜想 VS 正在做而我没有做的事情是运行docker-compose而不是单独的命令。
| 归档时间: |
|
| 查看次数: |
5237 次 |
| 最近记录: |