我正在尝试在 Docker 桌面上部署 api 已成功部署到 Docker 桌面映像和容器,然后成功推送到 Docker Hub,它也显示正在运行,但无法在浏览器中查看它
当我使用第一服务时,它向我显示,任何人都可以解释他的名字是如何得到的
里面显示了为什么端口 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,这是我第三次尝试在这里有一些好的概念
从日志消息中可以看到,您的应用程序正在侦听端口 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