在Visual Studio上关闭调试后如何访问在docker上运行的网站

问题描述

我在.net核心上构建了一个非常简单的Web应用程序和Web api,并配置了docker-compose以使它们能够在同一网络上正确通信。

在Visual Studio上,当我在Docker Compose项目上玩游戏时,它运行良好,Web应用程序和Web api都可以正常工作并且可以正常通信。

在Docker桌面应用程序上,我看到它们正在运行(绿色)。

enter image description here

但是当我在VS上关闭/停止调试器时,即使容器仍在运行,我也无法访问网站。我以为docker就像IIS一样。

我是否误解了docker功能,还是需要从 CLI 重新运行它们,还是将它们发布到什么地方或什么地方? 我认为,容器已启动并正在运行的事实应该意味着它们已经存在,可供我导航。

请帮帮我。

解决方法

您是正确的,除非发生某些特殊的路由,否则容器正在运行这一事实意味着您的服务可用。

您可以看到docker ps -a命令公开的端口:

CONTAINER_ID: 560f78689902 
IMAGE: moviedecisionweb:dev 
COMMAND: "C:\\remote_debugger\\…"
CREATED: About a minute ago
STATUS: Up About a minute 
PORTS: 0.0.0.0:52002->80/tcp,0.0.0.0:52001->443/tcp 
NAMES: mdweb

CONTAINER_ID: 1cd7f72426fe
IMAGE: moviedecisionapi:dev
COMMAND: "C:\\remote_debugger\\…"
CREATED: About a minute ago
STATUS: Up About a minute
PORTS: 0.0.0.0:52005->80/tcp,0.0.0.0:52004->443/tcp
NAMES: mdapi

基于提供的输出,您有两个正在运行的Docker容器。

我假设端口80和443正在分别从您的应用程序提供HTTP和HTTPS服务。

基于此...

对于容器“ mdweb”,您应该能够通过以下方式从Docker主机(PC)访问Docker服务:

对于容器“ mdapi”,您应该能够通过以下方式从Docker主机(PC)访问Docker服务:

我相信您可以在上面交替使用localhost127.0.0.10.0.0.0

您不能在Docker HOST计算机上使用主机名“ mdweb”或“ mdapi”-除非您已明确设置DNS以处理这些名称。但是,如果您位于同一docker网络上的docker容器中,则可以使用这些主机名。

如果您提供了更多信息(例如您的docker-compose.yml),我们可以为您提供进一步的帮助...