Ошибка: чтение ECONNRESET с помощью веб-API ASP.NET Core в контейнере Docker.C#

Место общения программистов C#
Ответить
Anonymous
 Ошибка: чтение ECONNRESET с помощью веб-API ASP.NET Core в контейнере Docker.

Сообщение Anonymous »

Я использую .NET 8 и у меня есть приведенные ниже файлы Docker Compose и dockerfile для развертывания моего API в Docker из Rider для разработки.
API доступен, когда я запускаю API с сервером Kestrel, однако при развертывании в Docker я получаю

Ошибку: прочитайте ECONNRESET

когда я пытаюсь вызвать API.
API может достичь контейнера Postgres, поскольку я вижу миграцию EF, выполняемую в консоли Rider, и я также могу подключиться к Postgres из Postico через localhost:5432.
Я думаю, что мне не хватает каких-то конфигураций .NET, но я безуспешно искал в Google и SO.
Я получаю доступ к API по следующему URL-адресу: http://localhost:5068
Docker Compose:

Код: Выделить всё

services:

sweetnotes.api:
image: esausilva/sweetnotes.api
container_name: SweetNotes.Api
build:
context: .
dockerfile: src/Api/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://+:5068
- ASPNETCORE_HTTP_PORTS=5068
ports:
- "5068:5068"
depends_on:
- sweetnotes.db
volumes:
- ~/.aspnet/https:/root/.aspnet/https:ro
- ~/.microsoft/usersecrets:/root/.microsoft/usersecrets:ro

sweetnotes.db:
image: postgres:latest
container_name: SweetNotes.Db
environment:
- POSTGRES_USER=[USER]
- POSTGRES_PASSWORD=[PASSWORD]
- POSTGRES_DB=SweetNotes
volumes:
- ./.containers/database:/var/lib/postgresql/data
ports:
- "5432:5432"
Файл Docker:

Код: Выделить всё

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 5068

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

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

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

Код: Выделить всё

appsettings.json

Код: Выделить всё

{
"ConnectionStrings": {
"SweetNotes": "Server=sweetnotes.db;Port=5432;Database=SweetNotes;User Id=[USER];Password=[PASSWORD];"
},
"urls": "http://localhost:5068",
"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http1AndHttp2"
}
},
"CorsSettings": {
"FrontendOrigin": "http://localhost:3050"
}
}
Эту команду запускает Rider

Код: Выделить всё

/usr/local/bin/docker-compose -f /Users/[...]/docker-compose.yml -f /Users/[...]/.idea/.idea.SweetNotesApi/Docker/docker-compose.generated.override.yml -p sweetnotesapi up --force-recreate -d
И это переопределение Rider

Код: Выделить всё

# This is a generated file.  Not intended for manual editing.
services:
sweetnotes.api:
build:
context: "/Users/[...]/SweetNotesApi"
dockerfile: "src/Api/Dockerfile"
target: "base"
args:
BUILD_CONFIGURATION: "Debug"
command: []
entrypoint:
- "/opt/rider-debugger/linux-x64/dotnet/dotnet"
- "/opt/rider-debugger/JetBrains.Debugger.Worker.exe"
- "--mode=server"
- "--frontend-port=57100"
- "--backend-port=57300"
- "--timeout=60"
environment:
DOTNET_USE_POLLING_FILE_WATCHER: "true"
RIDER_DEBUGGER_LOG_DIR: "/var/opt/rider-debugger"
RESHARPER_LOG_CONF: "/etc/opt/rider-debugger/backend-log.xml"
image: "esausilva/sweetnotes.api:dev"
ports:
- "127.0.0.1:57019:57100"
- "127.0.0.1:57219:57300"
volumes:
- "/Users/[...]/usersecrets"
- "/Users/[...]/packages"
- "/Users/[...]/app:rw"
- "/Users/[...]/src:rw"
- "/Users/[...]/rider-debugger"
- "/Applications/[...]/backend-log.xml"
- "/Users/[...]/rider-debugger:rw"
working_dir: "/app"
Я использую MacOS.
Любая помощь приветствуется!

Подробнее здесь: https://stackoverflow.com/questions/785 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»