Как запустить образ Aspose.CAD Docker в Azure Function
Предварительные требования
- Docker должен быть установлен на вашей системе. Для получения информации о том, как установить Docker на Windows или Mac, обратитесь к ссылкам в разделе “Смотрите также”.
- Visual Studio 2022.
- NET 6 SDK используется в примере.
- Postman
Azure Function
В этом примере вы создаете простую функцию преобразования, которая конвертирует файл CAD и сохраняет его как изображение. Приложение затем может быть собрано в Docker и запущено в Azure Function.
Создание Azure Function
Чтобы создать программу Azure Function, выполните следующие шаги:
- После установки Docker убедитесь, что он использует контейнеры Linux (по умолчанию). Если необходимо, выберите опцию Переключиться на контейнеры Linux в меню Docker Desktops.
- В Visual Studio создайте Azure Function для .NET 6.
- Дополнительная информация.
- Установите последнюю версию Aspose.CAD из NuGet.
- Поскольку приложение будет запущено на Linux, возможно, вам потребуется установить дополнительные шрифты. Вы можете предпочесть ttf-mscorefonts-installer.
- Когда все необходимые зависимости добавлены, напишите простую программу, которая создает эллипс и сохраняет его как изображение:
public static class Function1
{
[FunctionName("convert")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
try
{
using (var image = (CadImage)Image.Load(req.Body))
{
var ms = new MemoryStream();
image.Save(ms, new PngOptions());
ms.Seek(0, (System.IO.SeekOrigin)SeekOrigin.Begin);
return new FileContentResult(ms.ToArray(), "application/octet-stream")
{
FileDownloadName = "Export.png"
};
}
}
catch (Exception e)
{
return new OkObjectResult(e.Message);
}
}
}
Конфигурация Dockerfile
Следующий шаг - создать и настроить Dockerfile в корневой папке проекта.
- Создайте Dockerfile и поместите его рядом с файлом решения вашего приложения. Сохраните это имя файла без расширения (по умолчанию).
- В Dockerfile укажите:
FROM mcr.microsoft.com/azure-functions/dotnet:4 AS base
WORKDIR /home/site/wwwroot
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev
RUN ln -s /usr/lib/libgdiplus.so/usr/lib/gdiplus.dll
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Aspose.CAD.Function/Aspose.CAD.Function.csproj", "Aspose.CAD.Function/"]
RUN dotnet restore "Aspose.CAD.Function/Aspose.CAD.Function.csproj"
COPY . .
WORKDIR "/src/Aspose.CAD.Function"
RUN dotnet build "Aspose.CAD.Function.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Aspose.CAD.Function.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /home/site/wwwroot
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
Выше представлен простой Dockerfile, который содержит следующие инструкции:
- Образ SDK, который будет использоваться. Здесь используется образ Net 6. Docker загрузит его, когда будет запущена сборка. Версия SDK указывается как тег.
- Далее, вам может понадобиться установить шрифты, потому что образ SDK содержит очень мало шрифтов. Также вы можете использовать локальные шрифты, скопированные в образ docker.
- Рабочий каталог, который указывается в следующей строке.
- Команда для копирования всего в контейнер, публикации приложения и указания точки входа.
Docker Hub
- Войдите в Docker Hub
- Создайте публичный репозиторий
Сборка и запуск приложения в Docker
Теперь приложение можно собрать и запустить в Docker. Откройте свой любимый командный интерпретатор, перейдите в папку с приложением (папка, где находятся файл решения и Dockerfile) и выполните следующую команду:
//пример
docker build -t <имя пользователя>/<имя репозитория> .
docker build -t user/asposefunction .
В первый раз, когда вы запускаете эту команду, это может занять больше времени, поскольку Docker должен загрузить необходимые образы. После завершения предыдущей команды выполните следующую команду, чтобы загрузить образ в Docker Hub:
//пример
docker push <имя пользователя>/<имя репозитория>:tagname
docker push user/asposefunction:latest
Azure
- Войдите в Azure.
- Выберите услуги Azure.
- Выберите Function App и создайте функцию.
- Повторите основные настройки, как на изображении ниже.
- Нажмите ‘Просмотреть + создать’ -> Создать.
- Дождитесь завершения развертывания.
- Нажмите кнопку ‘Перейти к ресурсу’.
- Остановите функцию aspose-cad-docker-example.
- Перейдите в меню центра развертывания и сделайте соответствующие настройки.
- Сохраните настройки
- Скопируйте URL-адрес вебхука из настроек центра развертывания.
- Перейдите в Docker Hub, выберите свой репозиторий и выберите вебхуки.
- Вставьте ‘URL вебхука’ из Azure в URL вебхука Docker Hub и задайте имя.
- Нажмите кнопку создания.
- Вернитесь к обзору функции Azure и запустите контейнер.
Пример выполнения
- Настройки Postman.
- Выберите любой файл DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
- Нажмите кнопку отправки.
Дополнительные примеры
Для получения дополнительных примеров того, как вы можете использовать Aspose.CAD в Docker, смотрите примеры.