Мой заголовок объясняет большую часть этого, но я хочу понять, почему я могу получить доступ к https://localhost: 32770 / и получить свои конечные точки API, когда я отлаживаю в Visual Studio, но когда я заканчиваю отладку становится недоступным.
В настоящее время я нахожусь в гуще нескольких дней, чтобы обернуть голову вокруг Docker и Kubernetes, и это немного озадачивает меня, и я действительно хотел бы заполнить этот пробел в моем знание.
После создания контейнер продолжает работать, что изменилось?
Я заметил, что он запускается в начале сборки:
docker exec -i 0f855d9b4c801bf8c52da48e6dd02ffdf0fe7242fde22fb9a221616e4b2900f9 /bin/sh \
-c "if PID=$(pidof dotnet); then kill $PID; fi"
, но я не не вижу, как это меняет то, что происходит после завершения отладки, когда это происходит до запуска файла dockerfile и всего остального. Я не понимаю - c в команде, но я понимаю, что скрипт в кавычках после его запуска в контейнере, следуя синтаксису docker exec
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
. кажется, что этот скрипт убивает существующую сборку кода до того, как будет создан новый.
Этот запуск выполняется до запуска файла dockerfile
docker build -f "F:\Dev\API_files\API_name\Dockerfile"
--force-rm
-t API_name:dev
--target base
--label "com.microsoft.created-by=visual-studio"
--label "com.microsoft.visual-studio.project-name=API_name" "F:\Dev\API_name"
Я не вижу здесь ничего, что могло бы изменяя способ работы контейнера, в этом случае rm «удаляет промежуточные контейнеры после сборки (по умолчанию true)» в соответствии с docker build --help
, следующий файл dockerfile запускается, и он в значительной степени используется по умолчанию для ASP. NET core Applications, он имеет
EXPOSE 80
EXPOSE 443
, а остальные простые шаги сборки. После всего этого я не могу найти много признаков того, что происходит. Я предполагаю, что это связано с IIS Express, но на самом деле я не знаю, что с ним происходит и когда отлаживается визуальный стержень ios. Что происходит за кулисами, которые работали во время отладки, чтобы открыть порт localhost для контейнера docker?
Редактировать: я обнаружил команду docker run, которая может иметь к этому какое-то отношение, но может и нет. Команда docker run имеет флаг -P
для 'Publi sh все открытые порты для случайных портов', но контейнер никогда не останавливается, поэтому я не смогу найти эти порты и подключиться к API?