Як запустити Docker-образ Aspose.CAD в Azure Function

Передумови

  • Docker має бути встановлений на вашій системі. Для отримання інформації про те, як встановити Docker на Windows або Mac, перегляньте посилання в розділі “Дивіться також”.
  • Visual Studio 2022.
  • Використовується NET 6 SDK у прикладі.
  • Postman

Azure Function

У цьому прикладі ви створюєте просту функцію конвертації, яка конвертує CAD-файл і зберігає його як зображення. Додаток можна скласти в Docker та запустити в Azure Function.

Створення Azure Function

Щоб створити програму Azure Function, виконайте наведені нижче кроки:

  1. Після встановлення Docker переконайтеся, що він використовує Linux-контейнери (за замовчуванням). Якщо необхідно, виберіть опцію “Переключитися на Linux-контейнери” в меню Docker Desktop.
  2. У Visual Studio створіть Azure Function на NET 6.
    Діалогове вікно проекту Azure Function NET 6
  3. Додаткова інформація.
    Діалогове вікно проекту Azure Function NET 6
  4. Встановіть останню версію Aspose.CAD з NuGet.
    Aspose.CAD на NuGet
  5. Оскільки додаток буде запущено на Linux, можливо, вам буде потрібно встановити додаткові шрифти. Ви можете віддати перевагу ttf-mscorefonts-installer.
  6. Коли всі потрібні залежності додані, напишіть просту програму, яка створить еліпс і збереже його як зображення:
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 в кореневій папці проекту.

  1. Створіть Dockerfile і помістіть його поруч з файлом рішення вашого додатка. Залиште цю назву файлу без розширення (за замовчуванням). Коренева папка проекту
  2. У 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

  1. Увійдіть у Docker Hub
  2. Створіть публічний репозиторій

Збірка та запуск додатка в Docker

Тепер додаток можна зібрати та запустити в Docker. Відкрийте свій улюблений командний рядок, змініть директорію на папку з додатком (папка, в якій розміщено файл рішення та Dockerfile), і виконайте команду:

//приклад
docker build -t <user name>/<repository name> .

docker build -t user/asposefunction .

Перший раз, коли ви запустите цю команду, це може зайняти більше часу, оскільки Docker потрібно завантажити потрібні образи. Після того, як попередня команда завершиться, виконайте наступну команду, щоб відправити образ у docker hub:

//приклад
docker push <user name>/<repository name>:tagname

docker push user/asposefunction:latest

Azure

  1. Увійдіть в Azure.
  2. Виберіть служби Azure.
  3. Виберіть Function App і створіть функцію.
    Кнопка створення функції в Azure
  4. Повторіть основні налаштування, як на зображенні нижче.
    Налаштування створення функції в Azure
  5. Натисніть ‘Переглянути + створити’ -> Створити.
  6. Дочекайтеся завершення розгортання.
  7. Натисніть кнопку ‘Перейти до ресурсу’.
    Кнопка ресурсу
  8. Зупиніть функцію aspose-cad-docker-example.
    Зупинити контейнер
  9. Перейдіть до меню центру розгортання та внесіть відповідні налаштування.
    Центр розгортання
  10. Збережіть налаштування.
  11. Скопіюйте URL-адресу Webhook із налаштувань центру розгортання.
    URL-адреса Webhook
  12. Перейдіть до Docker Hub, виберіть свій репозиторій і виберіть вебхуки.
  13. Вставте ‘URL-адресу Webhook’ з Azure в URL-адресу вебхука Docker Hub і встановіть ім’я.
    Налаштування Webhook у Docker
  14. Натисніть кнопку створення.
  15. Поверніться до загального огляду Azure Function і запустіть контейнер.
    Меню огляду

Приклад виконання

  1. Налаштування Postman.
    Меню огляду
  2. Виберіть будь-який файл DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Натисніть кнопку відправити.

Більше прикладів

Для більшої кількості зразків того, як ви можете використовувати Aspose.CAD у Docker, дивіться приклади.

Дивіться також