do tnet run зависает в работающем Docker контейнере - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть Angular 8. NET Базовое приложение, которое я пытаюсь запустить в Docker. Я могу успешно создать Docker образ и запустить контейнер в режиме отсоединения. Я могу выполнить c в работающий контейнер и go в папку Angular и успешно запустить ng serve --host 0.0.0.0. Когда я go в папку. NET и запускаю dotnet run, он зависает в «Использование параметров запуска из ... / launchsettings. json». В Dockerfile я выставляю порт 80 со строкой EXPOSE 80. Когда я запускаю контейнер, я сопоставляю порты для Angular frontend (4200) и. NET backend (5000) следующим образом:

docker run -it --rm -d -p 4200:4200 -p 5000:80 portal /bin/bash

Я не получаю никаких ошибок, когда я запустить dotnet run в контейнере. Как мне получить dotnet run до фини sh?

ОБНОВЛЕНИЕ: Вот мой Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app/
EXPOSE 80

#install node and npm
RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt-get install -yq nodejs build-essential

#install angular-cli
RUN npm install -g @angular/cli

RUN mkdir library
#add local nuget packages
ADD ./library/. /app/library

RUN mkdir Web
COPY ./Web/. /app/Web
RUN cd Web && npm install

RUN mkdir API

# currently in the app folder
COPY ./API/Api.csproj /app/API
ENV DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0
COPY ./API/NuGet.config /app/API

RUN cd API && dotnet restore

#copies all files into current directory
COPY ./API/. /app/API

Вот мои настройки запуска. json:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:52121",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "API": {
      "commandName": "Project",
      "launchBrowser": false,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5000/"
    }
  }
}

ОБНОВЛЕНИЕ 2: Я нашел. NET Core Docker образец приложения https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-3.1 Я добавил профиль порта 80 в стартовые настройки примера приложения. json в мои стартовые настройки. json без успеха. Я полностью озадачен в этом пункте. Я выполнил команду 'do tnet run' с '--verbosity подробно' в контейнере docker и не получил ни предупреждений, ни ошибок. Я подозреваю, что это может быть связано с подключением к базе данных, но я даже не знаю, с чего начать, как его устранить.

1 Ответ

0 голосов
/ 07 марта 2020

Вы должны добавить другой профиль, который содержит информацию о настройках Docker. Как Microsoft упомянула на своем веб-сайте

Информация о профиле по умолчанию:

"Docker": {
  "commandName": "Docker",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_URLS": "https://+:443;http://+:80",
    "ASPNETCORE_HTTPS_PORT": "44360"
  },
  "httpPort": 51803,
  "useSSL": true,
  "sslPort": 44360
}

https://docs.microsoft.com/en-us/visualstudio/containers/container-launch-settings?view=vs-2019

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...