چگونه تصویر Docker Aspose.CAD را در Azure Function اجرا کنیم
پیشنیازها
- Docker باید بر روی سیستم شما نصب شده باشد. برای اطلاعات در مورد چگونگی نصب Docker بر روی ویندوز یا مک، به لینکهای بخش “همچنین ببینید” مراجعه کنید.
- IntelliJ IDEA.
- Azure Toolkit برای IntelliJ.
- Postman.
Azure Function
در این مثال، شما یک تابع ساده تبدیل ایجاد میکنید که یک فایل CAD را تبدیل کرده و آن را به عنوان یک تصویر ذخیره میکند. سپس میتوان برنامه را در Docker ساخت و در Azure Function اجرا کرد.
ایجاد Azure Function
برای ایجاد برنامه Azure Function، مراحل زیر را دنبال کنید:
پس از نصب Docker، اطمینان حاصل کنید که از کانتینرهای لینوکسی استفاده میکند (به طور پیشفرض). در صورت لزوم، گزینه Switch to Linux containers را از منوی Docker Desktop انتخاب کنید.
پروژه Azure Function را در IntelliJ IDEA ایجاد کنید.
Tools->Azure->Sing In و انتخاب احراز هویت OAuth 2.0.
در مرورگر ثبتنام کنید.
نام اشتراک را انتخاب کنید.
پشتیبانی Docker را اضافه کنید.
DockerFile را طبق بخش پیکربندی Dockerfile ویرایش کنید.
بلوکهایی برای مخزن aspose.cad در pom.xml اضافه کنید.
<repositories> <repository> <id>AsposeJavaAPI</id> <name>API جاوا Aspose</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 { /** * این تابع در endpoint "/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 را انتخاب کنید.
- برنامه عملکرد را انتخاب کرده و یک تابع ایجاد کنید.
- تنظیمات اولیه را مانند تصویر زیر تکرار کنید.
- روی ‘بررسی + ایجاد’ -> ایجاد کلیک کنید.
- منتظر اتمام استقرار باشید.
- روی دکمه ‘به منبع بروید’ کلیک کنید.
- عملکرد aspose-cad-docker-example را متوقف کنید.
- به منوی مرکز استقرار بروید و تنظیمات مناسب را انجام دهید.
- تنظیمات را ذخیره کنید.
- URL Webhook را از تنظیمات مرکز استقرار کپی کنید.
- به Docker Hub بروید، مخزن خود را انتخاب کرده و وبهوکها را انتخاب کنید.
- ‘Webhook url’ را از Azure در URL webhook 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 استفاده کنید، به نمونهها مراجعه کنید.