部署到 Docker 桌面后无法查看网站 Swagger api

问题描述 投票:0回答:1

我正在尝试在 Docker 桌面上部署 api 已成功部署到 Docker 桌面映像和容器,然后成功推送到 Docker Hub,它也显示正在运行,但无法在浏览器中查看它

This is my Docker Hub Image

这些是 docker 桌面镜像 enter image description here

当我使用第一服务时,它向我显示,任何人都可以解释他的名字是如何得到的 enter image description here

里面显示了为什么端口 8080

2024-11-10 15:11:51 info: Microsoft.EntityFrameworkCore.Update[30100]
2024-11-10 15:11:51       Saved 3 entities to in-memory store.
2024-11-10 15:11:51 info: Microsoft.Hosting.Lifetime[14]
2024-11-10 15:11:51       Now listening on: http://[::]:8080
2024-11-10 15:11:51 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:11:51       Application started. Press Ctrl+C to shut down.
2024-11-10 15:11:51 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:11:51       Hosting environment: Production
2024-11-10 15:11:51 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:11:51       Content root path: /app
2024-11-10 15:12:14 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:12:14       Application is shutting down...
2024-11-10 15:12:16 info: Microsoft.EntityFrameworkCore.Update[30100]
2024-11-10 15:12:16       Saved 3 entities to in-memory store.
2024-11-10 15:12:16 info: Microsoft.Hosting.Lifetime[14]
2024-11-10 15:12:16       Now listening on: http://[::]:8080
2024-11-10 15:12:16 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:12:16       Application started. Press Ctrl+C to shut down.
2024-11-10 15:12:16 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:12:16       Hosting environment: Production
2024-11-10 15:12:16 info: Microsoft.Hosting.Lifetime[0]
2024-11-10 15:12:16       Content root path: /app

但是我为 docker port 运行的命令是这样的 docker run -p 8082:82 -d aiftekhar/platformservice

之前我已将其运行到多个端口,但它正在运行,为什么我不能在浏览器中查看它

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

本地可以这样访问

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

请帮助我,我正在学习 docker,这是我第三次尝试在这里有一些好的概念

.net docker dockerhub
1个回答
0
投票

从日志消息中可以看到,您的应用程序正在侦听端口 8080。

2024-11-10 15:11:51 info: Microsoft.Hosting.Lifetime[14]
2024-11-10 15:11:51       Now listening on: http://[::]:8080

这可能与您开发时不同,因为 Visual Studio 会根据您的启动设置更改容器的运行方式。

另一件事需要注意的是,Swagger 默认仅在开发环境中可用。如果你查看你的 Program.cs 文件,应该有一些像这样的代码

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

如您所见,仅当应用程序在开发环境中运行时才会设置 Swagger。 Docker 通常不被视为开发环境。在生产中禁用 Swagger 的原因是人们通常不想向公众发布完整的 API 定义。

要启用 Swagger,您可以将环境变量 ASPNETCORE_ENVIRONMENT 设置为值“Development”。

因此,通过更改端口和环境变量,运行容器的命令应如下所示

docker run -p 8082:8080 -e ASPNETCORE_ENVIRONMENT=Development -d aiftekhar/platformservice

您的 API(包括 Swagger)应该可以在

上使用
http://localhost:8082/swagger/index.html
© www.soinside.com 2019 - 2024. All rights reserved.