首页 > 解决方案 > .NET Core 3.1 Web API 与 Docker 桌面。访问容器而不在 VS.NET 中运行项目

问题描述

我创建了一个 .net core web api 项目,并在 Docker Desktop for Window 下成功运行它。只要我在 Visual Studio 中运行项目,它就可以正常工作。我运行“Docker”配置文件并使用 localhost:8000/ 访问它。我已将其配置为使用端口 8000 ...

但是当我停止 Visual Studio 调试器时,即使它在 Docker Desktop 中仍显示为“正在运行”,我也无法再访问它。如何在不运行 Visual Studio 项目的情况下访问容器中的服务?

我是这个领域的新手,但是如果已经构建了一个图像并且该图像在容器中运行,我想我可以在不需要运行 Visual Studio 项目的情况下访问它。容器不是“我的图像的编译、构建、站立的实例,在 docker 主机中运行”吗?

谢谢,布伦特

标签: docker.net-core

解决方案


“容器不是“我的图像的编译、构建、站立的实例,在 docker 主机中运行”???” 是的,你是 100% 正确的,但是在 Visual Studio 中,他们进行了一些性能调整,所以一切都可以如此顺利地运行,而无需停止和删除容器、更新图像和运行它等任何开销。事实上,在后台,您的二进制文件和源代码是通过卷映射的,因此您无需在每次运行应用程序时都忙于构建新图像等。如果您在 Visual Studio 创建的容器上运行 docker inspect,您将能够在 JSON 输出的“Mounts”部分看到该映射。

我从启用了 Docker 的模板创建了一个全新的 ASP.NET Core Web API 应用程序。我注意到容器生命周期与 Visual Studio 进程相关联。如果我关闭 Visual Studio,容器就会停止并被删除,一旦我在 Visual Studio 中打开前面提到的项目的解决方案,容器就会立即启动并运行,即使我还没有开始调试。

如果要在 Visual Studio 之外运行容器,则始终可以从项目中的 Dockerfile 构建映像并运行它。

它可能看起来像这样:

cd "path/with/your/Dockerfile"
docker build -t "your-image-name" .
docker run -it -p 8000:80 -n "your-container-name" "your-image-name"

推荐阅读