Azure FunctionでAspose.CAD Dockerイメージを実行する方法

前提条件

  • システムにDockerがインストールされている必要があります。WindowsまたはMacにDockerをインストールする方法については、「その他参照」セクションのリンクを参照してください。
  • IntelliJ IDEA。
  • IntelliJ用Azureツールキット。
  • Postman。

Azure Function

この例では、CADファイルを変換し、画像として保存する簡単な変換関数を作成します。アプリケーションは Docker でビルドされ、Azure Function で実行されます。

Azure Functionの作成

Azure Functionプログラムを作成するには、以下の手順に従ってください。

  1. Dockerがインストールされたら、Linuxコンテナ(デフォルト)を使用していることを確認してください。必要に応じて、Docker Desktopメニューから「Linuxコンテナに切り替え」オプションを選択します。

  2. IntelliJ IDEAでAzure Functionプロジェクトを作成します。
    Azure Functionプロジェクトの作成
    Azure Functionプロジェクトの作成完了

  3. Tools->Azure->サインインし、OAuth 2.0認証を選択します。
    Azureサインイン

  4. ブラウザでログインします。

  5. サブスクリプション名を選択します。

  6. Dockerサポートを追加します。
    Dockerサポートの追加

  7. Dockerfileの構成セクションに従ってDockerFileを編集します。

  8. pom.xmlにリポジトリaspose.cadのブロックを追加します。

    <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. 必要な依存関係がすべて追加されたら、楕円を作成し、画像として保存する簡単なプログラムを書きます:

    public class HttpTriggerFunction {
        /**
         * この関数はエンドポイント"/api/HttpExample"でリスニングします。bashで"curl"コマンドを使用して呼び出す2つの方法:
         * 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トリガーがリクエストを処理しました。");
    
            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を作成して構成することです。

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

  1. Docker Hubにログインします。
  2. 公開リポジトリを作成します。

Dockerでアプリケーションをビルドして実行する

アプリケーションはDockerでビルドして実行できます。お気に入りのコマンドプロンプトを開き、アプリケーションのフォルダー(ソリューションファイルとDockerfileが配置されているフォルダー)にディレクトリを変更し、以下のコマンドを実行します:

  1. コンソールでのdockerfileビルドコマンド

    //例
    docker build -t <ユーザー名>/<リポジトリ名> .
    
    docker build -t user/asposefunction .

  2. このコマンドを初めて実行するときは、Dockerが必要なイメージをダウンロードするため、少し時間がかかる場合があります。前のコマンドが完了したら、以下のコマンドを実行してイメージをDocker Hubにプッシュします。

    //例
    docker push <ユーザー名>/<リポジトリ名>:tagname
    
    docker push user/aspose-cad-java:latest

  3. IDEでdockerfileを実行し、Docker Hubにプッシュします。
    IDEでのDockerの実行

  4. Docker Hubリポジトリのようにイメージ名を入力します。
    IDEでのDockerの実行next

  5. 終了までお待ちください。

Azure

  1. Azureにログインします。
  2. Azureサービスを選択します。
  3. Function Appを選択して関数を作成します。
    Azure関数ボタンを作成
  4. 下の画像のように基本設定を繰り返します。
    Azure関数設定を作成
  5. ‘レビュー + 作成’をクリックし、次に作成します。
  6. デプロイメントが完了するまで待ちます。
  7. ‘リソースに移動’ボタンをクリックします。
    リソースボタン
  8. aspose-cad-docker-example関数を停止します。
    コンテナを停止
  9. デプロイメントセンターメニューに移動し、適切な設定を行います。
    デプロイメントセンター
  10. 設定を保存します。
  11. デプロイメントセンター設定からWebhook URLをコピーします。
    Webhook URL
  12. Docker Hubに移動し、リポジトリを選択してWebhookを選択します。
  13. Azureからの’Webhook URL’をDocker HubのWebhook URLに貼り付け、名前を設定します。
    DockerのWebhook設定
  14. 作成ボタンをクリックします。
  15. Azure関数の概要に戻り、コンテナを起動します。
    概要メニュー

実行例

  1. Postmanの設定。
    概要メニュー
  2. 任意のDXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVGファイルを選択します。
  3. 送信ボタンをクリックします。
  4. 結果を保存します レスポンスを保存

さらに例

DockerでAspose.CADを使用する方法のさらなるサンプルについては、をご覧ください。

その他参照