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

必要条件

  • Dockerはシステムにインストールされている必要があります。WindowsまたはMacにDockerをインストールする方法については、「参照」セクションのリンクを参照してください。
  • Visual Studio 2022。
  • 例では、.NET 6 SDKが使用されます。
  • Postman

Azure Function

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

Azure Functionの作成

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

  1. Dockerがインストールされたら、Linuxコンテナを使用していることを確認してください(デフォルト)。必要に応じて、Docker Desktopメニューから「Linuxコンテナに切り替え」オプションを選択します。
  2. Visual Studioで、.NET 6 Azure Functionを作成します。
    NET 6 Azure Functionプロジェクトダイアログ
  3. 追加情報。
    NET 6 Azure Functionプロジェクトダイアログ
  4. NuGetから最新のAspose.CADバージョンをインストールします。
    Aspose.CAD on NuGet
  5. アプリケーションがLinuxで実行されるため、追加のフォントをインストールする必要があります。ttf-mscorefonts-installerを使用することをお勧めします。
  6. 必要な依存関係がすべて追加されたら、楕円を作成し、画像として保存するシンプルなプログラムを書きます:
public static class Function1
{
    [FunctionName("convert")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTPトリガー関数がリクエストを処理しました。");
        try
        {
            using (var image = (CadImage)Image.Load(req.Body))
            {
                var ms = new MemoryStream();
                image.Save(ms, new PngOptions());

                ms.Seek(0, (System.IO.SeekOrigin)SeekOrigin.Begin);

                return new FileContentResult(ms.ToArray(), "application/octet-stream")
                {
                    FileDownloadName = "Export.png"
                };
            }
        }
        catch (Exception e)
        {
            return new OkObjectResult(e.Message);
        }
    }
}

Dockerfileの設定

次のステップは、プロジェクトルートフォルダーにDockerfileを作成して構成することです。

  1. Dockerfileを作成し、アプリケーションのソリューションファイルの隣に置きます。このファイル名は拡張子なしで保持します(デフォルト)。 プロジェクトルートフォルダー
  2. Dockerfileに指定します:
FROM mcr.microsoft.com/azure-functions/dotnet:4 AS base
WORKDIR /home/site/wwwroot
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev 
RUN ln -s /usr/lib/libgdiplus.so/usr/lib/gdiplus.dll
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Aspose.CAD.Function/Aspose.CAD.Function.csproj", "Aspose.CAD.Function/"]
RUN dotnet restore "Aspose.CAD.Function/Aspose.CAD.Function.csproj"
COPY . .
WORKDIR "/src/Aspose.CAD.Function"
RUN dotnet build "Aspose.CAD.Function.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Aspose.CAD.Function.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /home/site/wwwroot
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

上記はシンプルなDockerfileで、以下の命令が含まれています:

  • 使用するSDKイメージ。ここでは.NET 6イメージです。Dockerはビルド時にこれをダウンロードします。SDKのバージョンはタグとして指定されます。
  • その後、フォントをインストールする必要があります。SDKイメージには非常に少ないフォントが含まれているため、ローカルフォントをDockerイメージにコピーして使用することもできます。
  • 次の行で指定された作業ディレクトリ。
  • コンテナにすべてをコピーし、アプリケーションを公開し、エントリーポイントを指定するコマンド。

Docker Hub

  1. Docker Hubにログインします。
  2. パブリックリポジトリを作成します。

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

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

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

docker build -t user/asposefunction .

このコマンドを初めて実行する際、Dockerが必要なイメージをダウンロードする必要があるため、時間がかかる場合があります。前のコマンドが完了した後、次のコマンドを実行してイメージをDocker Hubにプッシュします:

//例
docker push <ユーザー名>/<リポジトリ名>:タグ名

docker push user/asposefunction:latest

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に移動し、リポジトリを選択し、Webhooksを選択します。
  13. Azureからの’Webhook URL’をDocker HubのWebhook URLに貼り付けて名前を設定します。
    DockerのWebhook設定
  14. 作成ボタンをクリックします。
  15. Azure Functionの概要に戻り、コンテナを起動します。
    概要メニュー

実行例

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

その他の例

Docker内でAspose.CADを使用する方法のサンプルについては、を参照してください。

参照