Я узнаю больше о Azure, контейнерах, службах приложений и интеграции VNet (предварительный просмотр).
Я могу успешно развернуть мой do tnet core (3.1) API напрямую на Azure Служба приложений (Linux разновидность) и настройка соответствующей интеграции VNet, которая позволяет API получать доступ к предварительному адресу 192.168 .., пока API общедоступен.
Я хотел бы развернуть код в виде Docker образа в реестре контейнеров Azure, а затем развернуть образ контейнера в службе приложений и использовать ту же интеграцию VNet.
Когда я делаю это, контейнерная версия службы приложений не достигает того же адреса 192.168 .., что служба прямой связи с приложением.
Azure сообщает мне, что более подробную информацию по этому вопросу можно найти здесь: https://github.com/Azure/app-service-linux-docs/blob/master/app_service_linux_vnet_integration.md
Прямой по этой ссылке :
Linux Служба приложений VNet Интеграция Azure Интеграция виртуальной сети (VNet) для Linux Веб-приложение в настоящее время находится в режиме предварительного просмотра. Клиенты могут использовать функцию VNet для разработки и тестирования интеграции с вашими веб-приложениями. Пожалуйста, не используйте эту функцию в производственных целях. Узнайте, как настроить VNet с вашим веб-приложением.
Во время предварительного просмотра вам нужно будет изменить приложение для интеграции с VNet. Это временное ограничение при выпуске VNet Preview, мы удалим ограничение до GA. В вашем приложении используйте переменную среды PORT в качестве порта прослушивания основного веб-сервера, а не используйте номер порта в жестком коде. Переменная среды PORT автоматически устанавливается платформой службы приложений во время запуска. Например, для приложения Node.js Express в вашем сервере должен быть следующий код. js file. Полный пример можно найти на Github.
app.listen(process.env.PORT);
ASPNETCORE_URLS - это рекомендуемый способ настройки ASP. NET Core docker образа, а вот пример DockerFile.
Примечание. Мы постоянно совершенствуем эту функцию VNet Предварительный просмотр интеграции для Linux веб-приложения, и в ближайшие несколько месяцев мы представим улучшения этой функции.
Короче говоря, я должен применить небольшой обходной путь, пока VNet находится в режиме предварительного просмотра.
На странице есть ссылка на DockerFile, который, очевидно, может использоваться для основных приложений tnet. https://github.com/dotnet/dotnet-docker/blob/7c18c117d9bd2d35e30cdb4a1548ac14b9f0f037/3.0/aspnetcore-runtime/nanoserver-1809/amd64/Dockerfile
Если я возьму копию этого DockerFile, мое приложение больше не будет компилировать с ошибками вокруг escape-символа. Если я удаляю их, я получаю другие сообщения об ошибках, в которых многие команды неизвестны.
Моя проблема в том, что я не до конца понимаю, как заставить это работать.
Что я должен включить в мои приложения DockerFile (моя версия ниже), чтобы убедиться, что контейнерная версия приложения правильно настроена для использования этого обходного пути?
Мой текущий DockerFile (файл по умолчанию docker для API в Visual Studio). Единственное, что я здесь изменил, была версия Windows, на которую была нацелена.
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["AZtoOnPremLDC/AZtoOnPremLDC.csproj", "AZtoOnPremLDC/"]
RUN dotnet restore "AZtoOnPremLDC/AZtoOnPremLDC.csproj"
COPY . .
WORKDIR "/src/AZtoOnPremLDC"
RUN dotnet build "AZtoOnPremLDC.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "AZtoOnPremLDC.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AZtoOnPremLDC.dll"]