Cách chạy hình ảnh Aspose.CAD Docker trong Azure Function
Các yêu cầu trước
- Docker phải được cài đặt trên hệ thống của bạn. Để biết thông tin về cách cài đặt Docker trên Windows hoặc Mac, hãy tham khảo các liên kết trong phần “Xem thêm”.
- IntelliJ IDEA.
- Azure Toolkit cho IntelliJ.
- Postman.
Azure Function
Trong ví dụ này, bạn tạo một hàm chuyển đổi đơn giản có thể chuyển đổi một tệp CAD và lưu nó dưới dạng hình ảnh. Ứng dụng sau đó có thể được xây dựng trong Docker và chạy trong Azure Function.
Tạo Azure Function
Để tạo chương trình Azure Function, hãy làm theo các bước dưới đây:
Khi Docker đã được cài đặt, hãy đảm bảo rằng nó sử dụng Containers Linux (mặc định). Nếu cần, chọn tùy chọn Chuyển sang Containers Linux từ menu Docker Desktops.
Tạo dự án Azure Function trong IntelliJ IDEA.
Tools->Azure->Đăng Nhập và chọn xác thực OAuth 2.0.
Đăng nhập vào trình duyệt.
Chọn tên Đăng ký.
Thêm hỗ trợ docker.
Chỉnh sửa DockerFile như trong phần Cấu hình một Dockerfile.
Thêm các khối cho kho lưu trữ aspose.cad trong 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>
Khi tất cả các phụ thuộc cần thiết đã được thêm vào, hãy viết một chương trình đơn giản tạo một hình elip và lưu nó thành hình ảnh:
public class HttpTriggerFunction { /** * Hàm này lắng nghe tại điểm cuối "/api/HttpExample". Có hai cách để gọi nó sử dụng lệnh "curl" trong 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 đã xử lý một yêu cầu."); 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(); } } }
Cấu hình một Dockerfile
Bước tiếp theo là tạo và cấu hình Dockerfile trong thư mục gốc của dự án.
- Trong Dockerfile, hãy chỉ định:
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"]
Phần trên là một Dockerfile đơn giản, chứa các hướng dẫn sau:
- Hình ảnh SDK sẽ được sử dụng. Docker sẽ tải xuống hình ảnh này khi quá trình xây dựng được thực hiện. Phiên bản của SDK được xác định bằng một thẻ.
- Thư mục làm việc, được xác định trong dòng tiếp theo.
- Lệnh để sao chép mọi thứ vào container, xuất bản ứng dụng và chỉ định điểm vào.
Docker Hub
- Đăng nhập Docker Hub
- Tạo kho lưu trữ công khai
Xây dựng và Chạy Ứng dụng trong Docker
Bây giờ ứng dụng có thể được xây dựng và chạy trong Docker. Mở cửa sổ lệnh mà bạn yêu thích, thay đổi thư mục đến thư mục có ứng dụng (thư mục nơi tệp giải pháp và Dockerfile được đặt) và chạy lệnh sau:
Lệnh dockerfile xây dựng trong console
//ví dụ docker build -t <tên người dùng>/<tên kho lưu trữ> . docker build -t user/asposefunction .
Lần đầu tiên bạn chạy lệnh này, có thể mất thời gian lâu hơn vì Docker cần tải xuống các hình ảnh cần thiết. Sau khi lệnh trước hoàn tất, chạy lệnh sau đây để đẩy hình ảnh lên docker hub.
//ví dụ docker push <tên người dùng>/<tên kho lưu trữ>:tagname docker push user/aspose-cad-java:latest
Chạy dockerfile trong IDE và sau đó đẩy lên docker hub.
Nhập tên hình ảnh, như trong kho lưu trữ Docker HUb.
Chờ cho đến khi xong.
Azure
- Đăng nhập Azure.
- Chọn các dịch vụ Azure.
- Chọn Function App và tạo một hàm.
- Lặp lại các cài đặt cơ bản như trong hình bên dưới.
- Nhấn ‘Xem + tạo’ -> Tạo.
- Chờ cho đến khi triển khai hoàn tất.
- Nhấn nút ‘Đi đến tài nguyên’.
- Dừng hàm aspose-cad-docker-example.
- Đi đến menu trung tâm triển khai và thực hiện các cài đặt thích hợp.
- Lưu cài đặt
- Sao chép URL Webhook từ các cài đặt trung tâm triển khai.
- Đi đến Docker Hub, chọn kho lưu trữ của bạn và chọn webhooks.
- Dán ‘URL Webhook’ từ Azure vào URL webhook Docker Hub và đặt tên.
- Nhấn nút tạo.
- Trở lại tổng quan hàm azure và khởi động container.Có thể mất vài phút cho hàm khởi động.
Ví dụ thực thi
- Cài đặt Postman.
- Chọn bất kỳ tệp DXF, DWG, DGN, DWF, DWFX, IFC, STL, DWT, IGES, PLT, CF2, OBJ, HPGL, IGS, PCL, FBX, PDF, SVG nào.
- Nhấn nút gửi.
- Lưu kết quả
Nhiều Ví dụ
Để biết thêm các mẫu về cách bạn có thể sử dụng Aspose.CAD trong Docker, xem các ví dụ.