C# Docker仅为http端口返回响应
这是docker撰写的部分C# Docker仅为http端口返回响应,c#,docker,https,C#,Docker,Https,这是docker撰写的部分 ecommerce.supplier: container_name: supplier image: ${DOCKER_REGISTRY-}ecommercesupplier build: context: . dockerfile: ECommerce.Supplier/Dockerfile ports: - "5000:80" - "50
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:
那么这一切的结果是什么呢。当我击中http://localhost:5000/api/V1/Supplier/getlist 使用带有适当令牌的get请求,我收到一个响应。但如果我试着用相同的终点https://localhost:5001 我在《邮递员》中收到“无法得到任何回应”
我怎样才能让它工作在https://localhost:5001. 我在DEV OPS中的水平是初学者,所以如果你想要更多的信息,请仔细解释你到底需要什么。
旁注:屏幕截图中的所有服务都出现了这种情况。问题似乎在于,在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\u URL属性中
希望这有帮助。端口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一起进入bash——如果你有一个主页,那么“curl”就足够了。它是一个网站还是一个API服务器?(Stack overflow正在curl命令中删除https://我发现了这两个指南:和。