Как запустить образ Aspose.CAD Docker в Azure Function
Предварительные требования
- Docker должен быть установлен на вашей системе. Для получения информации о том, как установить Docker на Windows или Mac, обратитесь к ссылкам в разделе “Смотрите также”.
- IntelliJ IDEA.
- Azure Toolkit for IntelliJ.
- Postman.
Azure Function
В этом примере вы создадите простую функцию преобразования, которая конвертирует файл CAD и сохраняет его как изображение. Приложение затем может быть создано в Docker и запущено в Azure Function.
Создание Azure Function
Чтобы создать программу Azure Function, выполните следующие шаги:
После установки Docker убедитесь, что он использует контейнеры Linux (по умолчанию). При необходимости выберите вариант переключения на Linux-контейнеры из меню Docker Desktops.
Создайте проект Azure Function в IntelliJ IDEA.
Инструменты -> Azure -> Войти и выберите аутентификацию 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" {ваш хост}/api/HttpExample * 2. curl "{ваш хост}/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 обработал запрос."); 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 <имя пользователя>/<имя репозитория> . docker build -t user/asposefunction .
Первый раз, когда вы запускаете эту команду, это может занять больше времени, так как Docker должен загрузить необходимые образы. После завершения предыдущей команды выполните следующую команду для отправки изображения в docker hub.
//пример docker push <имя пользователя>/<имя репозитория>:tagname docker push user/aspose-cad-java:latest
Запустите dockerfile в IDE и после отправки в docker hub.
Введите имя изображения, как в репозитории Docker HUb.
Ждите завершения.
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 смотрите примеры.