【问题标题】:Docker returning response only for http portDocker 仅针对 http 端口返回响应
【发布时间】:2020-07-12 19:30:20
【问题描述】:

这里是docker compose的部分

ecommerce.supplier:
    container_name: supplier
    image: ${DOCKER_REGISTRY-}ecommercesupplier
    build:
        context: .
        dockerfile: ECommerce.Supplier/Dockerfile
    ports:
        - "5000:80"
        - "5001:443"
    env_file: ECommerce.Common/Common.env
    environment:
        - ConnectionStrings__DefaultConnection=Server=host.docker.internal\MSSQLSERVER01;Database=ECommerceSupplier;User Id=sa;Password=123456;MultipleActiveResultSets=true
    restart: on-failure
    volumes:
        - ./.aspnet/supplier/DataProtection-Keys:/root/.aspnet/DataProtection-Keys
    networks: 
        - ecommerce-network

这是该服务的 Docker 文件的一部分,它公开了端口。该文件由 Visual Studio 自动生成。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

这里是 docker ps:

那么这一切的结果是什么。当我使用带有正确令牌的 get 请求点击 http://localhost:5000/api/V1/Supplier/getlist 时,我收到了响应。但是,如果我尝试使用 https://localhost:5001 的相同端点,我会在邮递员中收到“无法得到任何响应”。

如何让它在 https://localhost:5001 上运行。我在开发运营方面的水平是初学者,所以如果您想了解更多信息,请考虑仔细解释您到底需要什么。

请注意,屏幕截图中的所有服务都会发生这种情况。

【问题讨论】:

  • 什么端口 docker 文件暴露是无关紧要的。您的 docker-compose 文件将 localhost:5000 指向容器端口 80,将 localhost:5001 指向容器端口 443。如果 localhost:5001 不起作用,则最可能的原因是在该容器中运行的应用程序未侦听端口 443 .
  • 你应该进入 docker 并在 443 上卷曲它(从 docker 内部)。可能在启动 Web 应用程序时仅使用端口 80 上的绑定。如果你的 docker 绑定 5001->443 的事件,Web 应用程序不接受 443 上的请求。
  • @ddfra 你能告诉我如何在 443 上卷曲它,因为我在 linux 中的知识低于 0。我的链接也可以,我尝试研究它,但我没有成功 10分钟。我使用 docker exec -it af bash 进入 bash
  • 如果你有一个主页,那么“curl localhost:443”就足够了。它是网站还是 API 服务器? (堆栈溢出就是去掉curl命令中的https://)

标签: c# docker https


【解决方案1】:

看起来问题在于,在您的 docker 容器中,应用程序没有在 443 上侦听。

也许这两个链接可以帮助你:

我会看看这部分:

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/core/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

在 environment.ASPNETCORE_URLS 属性中。

希望这有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多