Як запустити Docker-образ Aspose.CAD в Azure Function
Попередні вимоги
- Docker повинен бути встановлений на вашій системі. Для отримання інформації про те, як встановити Docker на Windows або Mac, зверніться до посилань у розділі “Дивіться також”.
- IntelliJ IDEA.
- Azure Toolkit для IntelliJ.
- Postman.
Azure Function
У цьому прикладі ви створюєте просту функцію конвертації, яка конвертує CAD-файл і зберігає його як зображення. Додаток можна буде зібрати в Docker і запустити в Azure Function.
Створення Azure Function
Щоб створити програму Azure Function, виконайте наведені нижче кроки:
Після встановлення Docker переконайтеся, що він використовує контейнері Linux (за умовчанням). Якщо це необхідно, виберіть опцію Switch to Linux containers у меню Docker Desktops.
Створіть проект Azure Function в IntelliJ IDEA.
У меню Tools->Azure->Sing In виберіть автентифікацію OAuth 2.0.
Увійдіть у браузер.
Виберіть ім’я підписки.
Додайте підтримку Docker.
Відредагуйте DockerFile, як у розділі Налаштування Dockerfile.
Додайте блоки для репозиторію aspose.cad у pom.xml.
<repositories> <repository> <id>AsposeJavaAPI</id> <name>Aspose Java API</name> <url>https://releases.aspose.com/java/repo/</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.aspose</groupId> <artifactId>aspose-cad</artifactId> <version>22.3</version> <scope>compile</scope> </dependency> </dependencies>
Коли всі необхідні залежності додані, напишіть просту програму, яка створює еліпс і зберігає його як зображення:
public class HttpTriggerFunction { /** * Ця функція слухає за кінцевою точкою "/api/HttpExample". Два способи виклику за допомогою команди "curl" у bash: * 1. curl -d "HTTP Body" {your host}/api/HttpExample * 2. curl "{your host}/api/HttpExample?name=HTTP%20Query" */ @FunctionName("HttpExample") public HttpResponseMessage run( @HttpTrigger( name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, final ExecutionContext context) throws FileNotFoundException { context.getLogger().info("Java HTTP trigger processed a request."); try{ String body = request.getBody().get(); InputStream targetStream = new ByteArrayInputStream(body.getBytes()); CadImage image = (CadImage)Image.load(targetStream); { CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions(); rasterizationOptions.setPageWidth(1200); rasterizationOptions.setPageHeight(1200); ImageOptionsBase options = new PngOptions(); options.setVectorRasterizationOptions(rasterizationOptions); ByteArrayOutputStream out = new ByteArrayOutputStream(); image.save(out, options); return request.createResponseBuilder(HttpStatus.OK) .header("Content-type", "image/png") .header("Content-Disposition", "attachment;filename=filename.png") .body(out.toByteArray()).build(); } } catch (Exception e) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body(e.getMessage()).build(); } } }
Налаштування Dockerfile
Наступним кроком є створення та налаштування Dockerfile у кореневій папці проекту.
- У Dockerfile вкажіть:
FROM mcr.microsoft.com/azure-functions/java:3.0-java8-build AS installer-env COPY . /src/java-function-app RUN cd /src/java-function-app && \ mkdir -p /home/site/wwwroot && \ mvn clean package && \ cd ./target/azure-functions/ && \ cd $(ls -d */|head -n 1) && \ cp -a . /home/site/wwwroot FROM mcr.microsoft.com/azure-functions/java:3.0-java8-appservice ENV AzureWebJobsScriptRoot=/home/site/wwwroot \ AzureFunctionsJobHost__Logging__Console__IsEnabled=true COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]
Викладений вище Dockerfile є простим і містить такі інструкції:
- Образ SDK, який буде використовуватися. Docker завантажить його, коли буде запущено збірку. Версія SDK вказується як тег.
- Папка робочого каталогу, яка вказується в наступному рядку.
- Команда для копіювання всього в контейнер, публікація додатку та вказівка точки входу.
Docker Hub
- Увійдіть у Docker Hub
- Створіть загальнодоступний репозиторій
Побудова та запуск програми в Docker
Тепер додаток можна зібрати та запустити в Docker. Відкрийте улюблений командний рядок, змініть каталог до папки з додатком (папка, де розташований файл рішення та Dockerfile) і запустіть таку команду:
Команда побудови 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/aspose-cad-java:latest
Запустіть dockerfile в IDE і після відправки до docker hub.
Введіть ім’я образу, як у репозиторії Docker Hub.
Чекайте закінчення.
Azure
- Увійдіть в Azure.
- Виберіть послуги Azure.
- Виберіть Function App і створіть функцію.
- Повторіть основні налаштування, як на зображенні нижче.
- Натисніть ‘Review + create’ -> Create.
- Чекайте завершення розгортання.
- Натисніть кнопку ‘Go to resource’.
- Зупиніть функцію aspose-cad-docker-example.
- Перейдіть до меню центру розгортання та налаштуйте відповідні параметри.
- Збережіть налаштування
- Скопіюйте URL-адресу Webhook із налаштувань центру розгортання.
- Перейдіть до Docker Hub, виберіть свій репозиторій і виберіть вебхуки.
- Вставте ‘Webhook 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 дивіться приклади.