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プログラムを作成するには、以下の手順に従ってください:
- Dockerがインストールされたら、Linuxコンテナを使用していることを確認してください(デフォルト)。必要に応じて、Docker Desktopメニューから「Linuxコンテナに切り替え」オプションを選択します。
- Visual Studioで、.NET 6 Azure Functionを作成します。
- 追加情報。
- NuGetから最新のAspose.CADバージョンをインストールします。
- アプリケーションがLinuxで実行されるため、追加のフォントをインストールする必要があります。ttf-mscorefonts-installerを使用することをお勧めします。
- 必要な依存関係がすべて追加されたら、楕円を作成し、画像として保存するシンプルなプログラムを書きます:
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を作成して構成することです。
- Dockerfileを作成し、アプリケーションのソリューションファイルの隣に置きます。このファイル名は拡張子なしで保持します(デフォルト)。
- 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
- Docker Hubにログインします。
- パブリックリポジトリを作成します。
Dockerでアプリケーションをビルドして実行する
アプリケーションはDockerでビルドおよび実行できます。お気に入りのコマンドプロンプトを開き、アプリケーションのフォルダー(ソリューションファイルとDockerfileが置かれているフォルダー)にディレクトリを変更し、次のコマンドを実行します:
//例
docker build -t <ユーザー名>/<リポジトリ名> .
docker build -t user/asposefunction .
このコマンドを初めて実行する際、Dockerが必要なイメージをダウンロードする必要があるため、時間がかかる場合があります。前のコマンドが完了した後、次のコマンドを実行してイメージをDocker Hubにプッシュします:
//例
docker push <ユーザー名>/<リポジトリ名>:タグ名
docker push user/asposefunction:latest
Azure
- Azureにログインします。
- Azureサービスを選択します。
- Function Appを選択し、関数を作成します。
- 以下の画像と同様に基本設定を繰り返します。
- ‘レビューと作成’をクリックし、次に’作成’をクリックします。
- デプロイが完了するのを待ちます。
- ‘リソースに移動’ボタンをクリックします。
- aspose-cad-docker-example関数を停止します。
- デプロイメントセンターメニューに移動し、適切な設定を行います。
- 設定を保存します。
- デプロイメントセンター設定からWebhook URLをコピーします。
- Docker Hubに移動し、リポジトリを選択し、Webhooksを選択します。
- Azureからの’Webhook URL’をDocker HubのWebhook URLに貼り付けて名前を設定します。
- 作成ボタンをクリックします。
- Azure Functionの概要に戻り、コンテナを起動します。
実行例
- Postman設定。
- 任意のDXF、DWG、DGN、DWF、DWFX、IFC、STL、DWT、IGES、PLT、CF2、OBJ、HPGL、IGS、PCL、FBX、PDF、SVGファイルを選択します。
- 送信ボタンをクリックします。
その他の例
Docker内でAspose.CADを使用する方法のサンプルについては、例を参照してください。