使用docker-compose启动.net core项目时在浏览器中访问swagger API

1l5u6lss  于 2023-05-22  发布在  Docker
关注(0)|答案(1)|浏览(191)

我有一个带有Blazor服务器项目的Visual Studio解决方案,以及一些ASP.NET Core Web API项目(它们应该是微服务)。
我已经用Visual Studio创建了以下docker-compose.yml,以便开始一切:

version: '3.4'

services:
  myserver.frontend:
    image: ${DOCKER_REGISTRY-}myserverfrontend
    build:
      context: .
      dockerfile: Server/MyServer.Frontend/Dockerfile

  mygateway.api:
    image: ${DOCKER_REGISTRY-}mygatewayapi
    build:
      context: .
      dockerfile: Services/MyGateway.API/Dockerfile

  identity.api:
    image: ${DOCKER_REGISTRY-}identityapi
    build:
      context: .
      dockerfile: Services/Identity.API/Dockerfile

  # Install the mongodb for offline data storage
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root
      ME_CONFIG_MONGODB_URL: mongodb://root:root@mongo:27017/

如果我开始只调试MyGateway项目,我可以在浏览器中看到它的swagger ui以进行调试。如果我只启动MyServer.Frontend,则只启动blazor页面。
如果我用docker-compose启动一切,我可以看到一切都在运行,我可以看到blazor服务器中的页面。
有没有一种方法可以用docker-compose.yml启动一切,并访问其他项目的web核心API?

ghg1uchk

ghg1uchk1#

默认情况下,Swagger仅在开发模式下运行WebAPI时可用。VS设置了这一点,但docker-compose没有。
像这样将ASPNETCORE_ENVIRONMENT变量添加到您的定义中,Swagger应该可用。您还需要将端口80Map到主机端口。

mygateway.api:
    image: ${DOCKER_REGISTRY-}mygatewayapi
    build:
      context: .
      dockerfile: Services/MyGateway.API/Dockerfile
    ports:
      - 8082:80
    environment:
      ASPNETCORE_ENVIRONMENT: Development

然后Swagger应该可以在http://localhost:8082/swagger上使用。

相关问题