Azure FunctionでAspose.CAD Dockerイメージを実行する方法
前提条件
- システムにDockerがインストールされている必要があります。WindowsまたはMacにDockerをインストールする方法については、「その他参照」セクションのリンクを参照してください。
- IntelliJ IDEA。
- IntelliJ用Azureツールキット。
- Postman。
Azure Function
この例では、CADファイルを変換し、画像として保存する簡単な変換関数を作成します。アプリケーションは Docker でビルドされ、Azure Function で実行されます。
Azure Functionの作成
Azure Functionプログラムを作成するには、以下の手順に従ってください。
Dockerがインストールされたら、Linuxコンテナ(デフォルト)を使用していることを確認してください。必要に応じて、Docker Desktopメニューから「Linuxコンテナに切り替え」オプションを選択します。
IntelliJ IDEAでAzure Functionプロジェクトを作成します。
Tools->Azure->サインインし、OAuth 2.0認証を選択します。
ブラウザでログインします。
サブスクリプション名を選択します。
Dockerサポートを追加します。
Dockerfileの構成セクションに従ってDockerFileを編集します。
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>
必要な依存関係がすべて追加されたら、楕円を作成し、画像として保存する簡単なプログラムを書きます:
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を作成して構成することです。
- 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
IDEでdockerfileを実行し、Docker Hubにプッシュします。
Docker Hubリポジトリのようにイメージ名を入力します。
終了までお待ちください。
Azure
- Azureにログインします。
- Azureサービスを選択します。
- Function Appを選択して関数を作成します。
- 下の画像のように基本設定を繰り返します。
- ‘レビュー + 作成’をクリックし、次に作成します。
- デプロイメントが完了するまで待ちます。
- ‘リソースに移動’ボタンをクリックします。
- aspose-cad-docker-example関数を停止します。
- デプロイメントセンターメニューに移動し、適切な設定を行います。
- 設定を保存します。
- デプロイメントセンター設定からWebhook URLをコピーします。
- Docker Hubに移動し、リポジトリを選択してWebhookを選択します。
- Azureからの’Webhook URL’をDocker HubのWebhook URLに貼り付け、名前を設定します。
- 作成ボタンをクリックします。
- Azure関数の概要に戻り、コンテナを起動します。関数の起動には数分かかることがあります。
実行例
- Postmanの設定。
- 任意のDXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVGファイルを選択します。
- 送信ボタンをクリックします。
- 結果を保存します
さらに例
DockerでAspose.CADを使用する方法のさらなるサンプルについては、例をご覧ください。