Начало работы с Docker в Visual Studio для Mac

В Visual Studio для Mac можно легко компилировать, отлаживать и выполнять контейнерные приложения ASP.NET Core, а также публиковать их в Azure.

Предварительные требования

Установка и настройка

Чтобы установить Docker, изучите и выполните рекомендации из статьи об установке Docker Desktop для Mac.

Создание веб-приложения ASP.NET Core и добавление поддержки Docker

  1. Создайте новое решение, выбрав Файл > Создать решение.
  2. В разделе .NET Core > Приложение выберите шаблон Веб-приложение: Создание приложения ASP.NET
  3. Выберите целевую платформу. В нашем примере используется .NET Core 2.2: Указание целевой платформы
  4. Введите сведения о проекте, например имя (DockerDemo в нашем примере). Созданный проект содержит все основные сведения, которые потребуются для сборки и запуска веб-сайта ASP.NET Core.
  5. В окне решения щелкните проект DockerDemo правой кнопкой мыши и выберите Добавить > Поддержка Docker. Добавление поддержки Docker

Visual Studio для Mac автоматически добавит в решение новый проект с именем docker-compose, а затем добавит в существующий проект файл Dockerfile.

Автоматически созданные файлы поддержки Docker

Общие сведения о Dockerfile

Dockerfile содержит инструкции по созданию окончательного образа Docker. См. справочник по Dockerfile для получения сведений о других доступных в нем командах.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore "DockerDemo/DockerDemo.csproj"
COPY . .
WORKDIR "/src/DockerDemo"
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish

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

Предыдущий Dockerfile основан на образе microsoft/aspnetcore и включает в себя инструкции по изменению базового образа путем сборки проекта и добавления его в контейнер.

Примечание

По умолчанию файл Dockerfile, созданный в Visual Studio для Mac, открывает порт 80 для HTTP-трафика. Чтобы включить HTTPS-трафик, добавьте Expose 443 в Dockerfile.

Отладка

Настройте проект docker-compose в качестве запускаемого проекта и запустите отладку (Пуск > Начать отладку). Эта команда компилирует, развертывает и запускает проект ASP.NET в контейнере.

Совет

Во время первого запуска после установки Docker Desktop может появиться следующая ошибка при попытке отладки: Cannot start service dockerdemo: Mounts denied

Добавьте /usr/local/share/dotnet/sdk/NuGetFallbackFolder на вкладку общего доступа в Docker Desktop:

Добавление папки NuGetFallbackFolder в раздел общего доступа

Когда сборка завершится, приложение откроется в браузере Safari:

Проект Docker по умолчанию, запущенный в Safari

Обратите внимание, что контейнер будет прослушивать некоторый порт (например, http://localhost:32768) номер которого может быть разным.

Чтобы просмотреть список выполняемых контейнеров, выполните команду docker ps в терминале.

Обратите внимание на ретранслятор портов на следующем снимке экрана (в разделе PORTS (Порты)). Это означает, что контейнер прослушивает порт, который мы ранее открывали в браузере Safari, и передает все запросы на внутренний веб-сервер через порт 80 (как определено в файле Dockerfile). Само приложение считает, что прослушивает порт 80:

Список контейнеров Docker