Dotnet docker 容器

Dotnet docker container

我创建了一个默认 Web Api 项目(Weatherforecast),并且在没有触及它的情况下添加了 Docker 支持。之后,我通过单击 docker 文件(在 Visual Studio 2022 上)并选择构建 Docker 图像来构建图像。 众所周知,默认项目 运行s 并且在本地主机上运行良好。 现在,我关闭 Visual Studio 和 运行 图像,如下所示:

docker run -d -p 8080:80 --name somename myimage

容器运行而且好像是开放了8080端口,至少在DockerDesktop里是这么写的,但是服务器端不是运行ning。如果我尝试以下地址:

http://localhost:8080/swagger/index.html

我在浏览器上什么也没有。

如果我使用 Docker 从 Visual Studio 内部 运行 项目,它工作正常。 这让我发疯。关于如何正确 运行 dotnet docker 图像有什么想法吗?

顺便说一句,一旦我有了容器 运行ning(不是网络 api 项目),如果我进入容器并手动 运行 dotnet myimage.dll它说明了有关地址的一些信息:http://*:80 已被占用...

有什么想法吗?
谢谢

默认情况下,仅当应用程序在开发环境中 运行ning 时才启用 Swagger。默认情况下,.NET docker 容器 运行 在生产环境中,因此 Swagger 不可用。

一个快速解决方法是在 运行 容器时设置环境,像这样

docker run -d -p 8080:80 --name somename -e ASPNETCORE_ENVIRONMENT=Development myimage

要获得更永久的解决方案,您可以添加

ENV ASPNETCORE_ENVIRONMENT=Development

到您的 Dockerfile,在 'base' 或 'final' 部分中,因此它最终出现在最终图像中。