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:

  1. 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.

  2. Tạo dự án Azure Function trong IntelliJ IDEA.
    Tạo dự án hàm azure
    Tạo dự án hàm azure-cuối

  3. Tools->Azure->Đăng Nhập và chọn xác thực OAuth 2.0.
    Đăng Nhập Azure

  4. Đăng nhập vào trình duyệt.

  5. Chọn tên Đăng ký.

  6. Thêm hỗ trợ docker.
    Đăng Nhập Azure

  7. Chỉnh sửa DockerFile như trong phần Cấu hình một Dockerfile.

  8. 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>

  9. 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.

  1. 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

  1. Đăng nhập Docker Hub
  2. 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:

  1. 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 .

  2. 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

  3. Chạy dockerfile trong IDE và sau đó đẩy lên docker hub.
    Chạy docker trong ide

  4. Nhập tên hình ảnh, như trong kho lưu trữ Docker HUb.
    Chạy docker trong ide-tiếp theo

  5. Chờ cho đến khi xong.

Azure

  1. Đăng nhập Azure.
  2. Chọn các dịch vụ Azure.
  3. Chọn Function App và tạo một hàm.
    Nút tạo hàm azure
  4. Lặp lại các cài đặt cơ bản như trong hình bên dưới.
    Cài đặt hàm azure
  5. Nhấn ‘Xem + tạo’ -> Tạo.
  6. Chờ cho đến khi triển khai hoàn tất.
  7. Nhấn nút ‘Đi đến tài nguyên’.
    Nút tài nguyên
  8. Dừng hàm aspose-cad-docker-example.
    Dừng container
  9. Đi đến menu trung tâm triển khai và thực hiện các cài đặt thích hợp.
    Trung tâm triển khai
  10. Lưu cài đặt
  11. Sao chép URL Webhook từ các cài đặt trung tâm triển khai.
    URL Webhook
  12. Đi đến Docker Hub, chọn kho lưu trữ của bạn và chọn webhooks.
  13. Dán ‘URL Webhook’ từ Azure vào URL webhook Docker Hub và đặt tên.
    Cài đặt Webhook trong docker
  14. Nhấn nút tạo.
  15. Trở lại tổng quan hàm azure và khởi động container.
    Tổng quan menu

Ví dụ thực thi

  1. Cài đặt Postman.
    Tổng quan menu
  2. 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.
  3. Nhấn nút gửi.
  4. Lưu kết quả Lưu phản hồi

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ụ.

Xem Thêm