Docker で Aspose.GIS を実行する方法
前提条件
-
Docker がシステムにインストールされている必要があります。Windows または Mac に Docker をインストールする方法については、「関連項目」セクションのリンクを参照してください。
-
Visual Studio 2022。
-
例で使用されるのは NET Core 3.1 SDK です。
Hello World アプリケーション
この例では、コンパウンドカーブを作成し、ファイルを保存する簡単な Hello World コンソールアプリケーションを作成します。その後、アプリケーションをビルドして Docker で実行できます。
コンソールアプリケーションの作成
Hello World プログラムを作成するには、以下の手順に従ってください。
- Docker がインストールされていることを確認したら、Linux コンテナー (デフォルト) を使用していることを確認してください。必要な場合は、Docker Desktops メニューから「Linux コンテナーに切り替える」オプションを選択します。
- Visual Studio で NET Core 3.1 コンソールアプリケーションを作成します。
- NuGet から最新の Aspose.GIS バージョンをインストールします。
- アプリケーションは Linux で実行されるため、適切なネイティブ Linux アセットをインストールする必要があります。dotnet core sdk 3.1 ベースイメージから開始し、libgdiplus libc6-dev をインストールします。
- すべての必要な依存関係を追加したら、コンパウンドカーブを作成する簡単なプログラムを書きます。
.NET
using System.IO; using Aspose.Gis.Geometries; using Aspose.Gis; namespace Aspose.GIS.Docker.Sample { internal class Program { static void Main(string[] args) { string path = Path.Combine("TestOut", "CreateCompoundCurve_out.shp"); using (VectorLayer layer = VectorLayer.Create(path, Drivers.Shapefile)) { var feature = layer.ConstructFeature(); // 'S' の文字を作成します (左下の端から開始) var compoundCurve = new CompoundCurve(); var bottom = (ILineString)Geometry.FromText("LineString (0 0, 3 0)"); var firstArc = (ICircularString)Geometry.FromText("CircularString (3 0, 4 1, 3 2)"); var middle = (ILineString)Geometry.FromText("LineString (3 2, 1 2)"); var secondArc = (ICircularString)Geometry.FromText("CircularString (1 2, 0 3, 1 4)"); var top = (ILineString)Geometry.FromText("LineString (1 4, 4 4)"); compoundCurve.AddCurve(bottom); compoundCurve.AddCurve(firstArc); compoundCurve.AddCurve(middle); compoundCurve.AddCurve(secondArc); compoundCurve.AddCurve(top); feature.Geometry = compoundCurve; layer.Add(feature); } } } }
出力ドキュメントを保存するための出力フォルダーとして「TestOut」フォルダーが指定されていることに注意してください。Docker でアプリケーションを実行する場合、ホストマシンのフォルダーはコンテナー内のこのフォルダーにマウントされます。これにより、Docker コンテナーで生成された Aspose.GIS の出力を簡単に表示できます。
Dockerfile の設定
次のステップは、Dockerfile を作成して構成することです。
- Dockerfile を作成し、アプリケーションのソリューションファイルと一緒に配置します。このファイルの拡張子は付けないようにしてください (デフォルト)。
- Dockerfile で以下を指定します。
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster
WORKDIR /app
COPY . ./
RUN apt-get update && \
apt-get install -y --allow-unauthenticated libgdiplus libc6-dev
RUN dotnet publish "Aspose.GIS.Docker.Sample.csproj" -c Release -o /app/out
ENTRYPOINT ["dotnet", "out/Aspose.GIS.Docker.Sample.dll"]
上記は単純な Dockerfile であり、次の指示が含まれています。
- 使用する SDK イメージ。ここでは Net 3.1 イメージです。ビルドが実行されると Docker がこれをダウンロードします。SDK のバージョンはタグとして指定されます。
- 次の行で指定されている作業ディレクトリ。
- コンテナー内で libgdiplus をインストールするためのコマンドを実行します。これは System.Drawing.Common によって必要です。
- すべてをコンテナーにコピーし、アプリケーションを発行し、エントリポイントを指定するコマンド。
Docker でアプリケーションのビルドと実行
これで、Docker でアプリケーションをビルドして実行できます。お気に入りのコマンドプロンプトを開き、アプリケーション (ソリューションファイルと Dockerfile が配置されているフォルダー) のディレクトリを変更し、次のコマンドを実行します。
docker build -t dockerfile .
このコマンドを初めて実行すると、Docker が必要なイメージをダウンロードする必要があるため、時間がかかる場合があります。前のコマンドが完了したら、次のコマンドを実行します。
docker run --mount type=bind,source=C:\Temp,target=/app/TestOut --rm dockerfile from Docker
その他の例
Aspose.GIS を Docker で使用する方法の詳細なサンプルについては、examples を参照してください。