не удается связаться с базовым веб-приложением net, используя docker (windows) - PullRequest
0 голосов
/ 14 апреля 2020

Это сводит меня с ума:

Я создал новое. Net Базовое веб-приложение из VS2019, добавив поддержку docker (linux контейнеров). Все работает нормально: если я запускаю отладчик из VS, образ создается, контейнер запускается и веб-приложение доступно по адресу http://localhost: 32772 / weatherforecast .

Затем я чищу все это, и попробуйте собрать и запустить вручную:

docker build -t webapp2 --file webapplication2/Dockerfile .
docker run --name webapp2 -p 5000:5000 -t webapp2
(or even docker run --name webapp2 -p 5000:5000 -e "ASPNETCORE_ENVIRONMENT=Development" -t webapp2)

Сборка выполняется успешно, и (по-видимому) команда запуска тоже работает отлично: enter image description here Но ... неожиданность. .. Таким образом, я больше не могу получить доступ к приложению (на http://localhost: 5000 / weatherforecast )!

Попробовал почти все, использовать внутренний IP-адрес для проверки, изменения портов и запуска команд, добавив -e "ASPNETCORE_URLS = https: // +: 443; http: // +: 80 ", похоже, ничего не работает.

Итак, вопрос в том, что за волхвы c у нас за командой отладки VS?

Я пытался посмотреть, что там, но ничего полезного не вижу:

docker run -dt -v "C:\Users\carlo\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Progetti\prove\docker\API\WebApplication2:/app" -v "C:\Progetti\prove\docker\API:/src/" -v "C:\Users\carlo\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -P --name WebApplication2 --entrypoint tail webapplication2:dev -f /dev/null

Спасибо!

1 Ответ

1 голос
/ 14 апреля 2020

Передача порта на docker run не переопределяет порт, на котором запущено приложение. Все, что вы говорите, это то, что вы хотите, чтобы порт 5000 в контейнере отображался как порт 5000 в сети. Тем не менее, ваше приложение работает на 80, так что вы ничего не покупаете. Вам понадобится -p 80:5000.

Переменная окружения ASPNETCORE_URLS - это просто способ настроить URL-адреса вашего приложения, которые в контейнере будут привязаны к https://+:443;http://+:80 по умолчанию. Установка переменной среды на то же самое снова ничего не делает. Вы могли бы сделать что-то вроде http://+:5000, что бы изменить внутренний порт на 5000 вместо 80, и тогда ваша оригинальная команда docker run сработала бы, потому что на порте 5000 что-то действительно работает.

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