Как да стартиране на 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 Containers (по подразбиране). При нужда, изберете опцията Switch to Linux containers от менюто на Docker Desktops.
Създайте проект Azure Function в IntelliJ IDEA.
Tools->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.
- Отидете в менюто на центъра за внедряване и направете необходимите настройки.
- Запазване на настройките
- Копирайте Webhook URL от настройките на центъра за внедряване.
- Отидете в 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, вижте примерите.