在建立安全 TLS 连接之前,客户端网络套接字已断开 Docker

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

我有带有预测的基本 Web API 应用程序。 我想要制作 docker-compose.yml 文件并使用 docker 容器,但是当我制作容器并尝试向那里发送请求时,出现“在建立安全 TLS 连接之前客户端网络套接字已断开”错误

我的 docker-compose.yml :

version: "3.9"
networks:
  online-test-dev:
    driver: bridge
services:
  app: 
    container_name: online-test
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:80"

Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 80
EXPOSE 8080

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "./WebApplication1/./WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

我的.Net 控制器:

using Microsoft.AspNetCore.Mvc;

namespace WebApplication1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }
}

我执行此请求:GET https://localhost:8080/WeatherForecast 并收到此错误:在建立安全 TLS 连接之前,客户端网络套接字已断开连接

当我请求 http 时,我收到此错误:“套接字挂起”

我尝试禁用防火墙,检查端口是否可用,我没有代理或VPN,我检查容器日志,我看到容器甚至没有收到任何请求:

2024-01-27 19:14:36 info: Microsoft.Hosting.Lifetime[14]
2024-01-27 19:14:36       Now listening on: http://[::]:8080
2024-01-27 19:14:36 info: Microsoft.Hosting.Lifetime[0]
2024-01-27 19:14:36       Application started. Press Ctrl+C to shut down.
2024-01-27 19:14:36 info: Microsoft.Hosting.Lifetime[0]
2024-01-27 19:14:36       Hosting environment: Production
2024-01-27 19:14:36 info: Microsoft.Hosting.Lifetime[0]
2024-01-27 19:14:36       Content root path: /app
.net docker docker-compose dockerfile asp.net-apicontroller
1个回答
0
投票

我不知道为什么,但是当我像这样更改 docker-compose.yml 端口时:

ports:
  - "8080:8080"

它开始为我工作

© www.soinside.com 2019 - 2024. All rights reserved.