Как запустить образ докера, созданный VS 2017

Докер нуб здесь ...

Как правильно запустить образ докера вашего приложения Asp.Net CORE, созданный Visual Studio 2017, в командной строке?

docker run -it -d -p 80:32769 myappimage

не работает должным образом (изображение запускается, но я не могу перейти к своему приложению)

Примечание. Я просто создал образец веб-приложения ASP.Net Core в Studio, используя шаблон по умолчанию, и добавил поддержку Docker (установив флажок «Добавить поддержку Docker»). Когда вы это делаете, Studio добавляет файл dockerfile и несколько файлов docker-compose.

Когда Visual Studio «запускает» изображение (нажав F5) - я могу успешно перейти к своему приложению (через «http://localhost:32789 "или аналогичный порт хоста. Приложение внутри контейнера находится на порту 80). Но я не могу понять команду, чтобы запустить ее сам в командной строке.

Стандартный файл Dockerfile, который Studio добавляет в ваш проект, - это ...

FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]

person HokieMike    schedule 30.04.2017    source источник
comment
Наверное, нужно будет дать нам больше информации. Dockerfile, что он пытается сделать, что означает «не удается перейти к приложению» и т. Д.   -  person johnharris85    schedule 30.04.2017
comment
Какой у вас докер-хост?   -  person user268396    schedule 30.04.2017
comment
Ваше приложение настроено для работы на порту 80? Порт по умолчанию - 5000 при использовании шаблона ASP.NET Core.   -  person Tseng    schedule 30.04.2017


Ответы (2)


Да, это возможно. Перестройте свое решение в конфигурации Выпуск и попробуйте запустить проект docker-compose с F5, чтобы убедиться, что образ обновлен и ваше приложение работает нормально. Затем выполните docker images консольную команду. Вы увидите что-то вроде:

REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
Your.App     latest   673b79a6bb3d   About a minute ago   294 MB

Все, что вам нужно, это запустить новый контейнер из этого образа и сопоставить его открытый порт с портом localhost. По умолчанию открытый порт - 80 (см. Dockerfile). Например:

docker run -d -p 1234:80 --name some_name Your.App:latest

Тогда ваше приложение должно стать доступным по адресу http://127.0.0.1:1234/.

Объяснение:

Если задана конфигурация Отладка, то Visual Studio создает пустые неработающие образы. Он вручную сопоставляет пустой контейнер с файловой системой, чтобы сделать возможной отладку, функции «Изменить и продолжить» и так далее. Вот почему образ dev бесполезен без Visual Studio. Создайте образ в конфигурации Выпуск, чтобы его можно было использовать.

Полный процесс публикации описан в документации: Инструменты Visual Studio для Docker

Публикация образов Docker

После того, как вы завершите цикл разработки и отладки вашего приложения, инструменты Visual Studio для Docker помогут вам создать рабочий образ вашего приложения. Измените раскрывающееся меню отладки на Выпуск и создайте приложение. Инструмент создаст образ с тегом :latest, который вы можете отправить в свой частный реестр или в Docker Hub.

person Ilya Chumakov    schedule 01.05.2017
comment
Большое спасибо, я искал этот ответ несколько дней - person Eskinder; 17.05.2017

Вы тут что-то путаете. Когда вы запускаете свой проект с помощью F5 в Visual Studio 2017, вы запускаете его с помощью IISExpress на произвольно настроенном порту.

В Docker у вас нет IISExpress, там ваше приложение размещается только на Kestrel (Kestrel всегда используется даже за IIS / IISExpress, но они действуют как обратный прокси).

Порт по умолчанию для Kestrel - 5000, но вы также можете настроить его. См. Мое сообщение здесь для получения более подробной информации о том, какие методы вы должны настроить для прослушивания ip / порта.

person Tseng    schedule 30.04.2017
comment
@ Franciscod'Anconia: Найдите время, чтобы внимательно прочитать ответ, он не требует нигде, где IISExpress работает в Docker. Проблема в том, что если вы добавляете поддержку докеров (по крайней мере, на момент написания iirc) задним числом (вместо добавления флажка при создании проекта), оно не становилось автоматически запускающим F5 приложением, что очевидно из публикация OPs URL-адреса с использованием высокого номера порта 32789. При запуске в докере этого не произойдет, что является четким индикатором того, что OP оставил настройку запуска / отладки по умолчанию, то есть IISExpress. - person Tseng; 23.05.2019