Как запустить образ 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, выполните следующие шаги:

  1. После установки Docker убедитесь, что он использует контейнеры Linux (по умолчанию). Если необходимо, выберите опцию Переключиться на контейнеры Linux в меню Docker Desktops.
  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 <имя пользователя>/<имя репозитория> .

docker build -t user/asposefunction .

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

//пример
docker push <имя пользователя>/<имя репозитория>: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-адрес вебхука из настроек центра развертывания.
    URL вебхука
  12. Перейдите в Docker Hub, выберите свой репозиторий и выберите вебхуки.
  13. Вставьте ‘URL вебхука’ из Azure в URL вебхука Docker Hub и задайте имя.
    Настройки вебхука в docker
  14. Нажмите кнопку создания.
  15. Вернитесь к обзору функции Azure и запустите контейнер.
    Меню обзора

Пример выполнения

  1. Настройки Postman.
    Настройки Postman
  2. Выберите любой файл DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG.
  3. Нажмите кнопку отправки.

Дополнительные примеры

Для получения дополнительных примеров того, как вы можете использовать Aspose.CAD в Docker, смотрите примеры.

Смотрите также