Как запустить Aspose.GIS в Docker

Необходимые условия

  • Docker должен быть установлен на вашей системе. Информацию о том, как установить Docker в Windows или Mac, см. ссылки в разделе “См. также”.

  • Visual Studio 2022.

  • В примере используется NET Core 3.1 SDK.

Hello World приложение

В этом примере вы создаете простое консольное приложение Hello World, которое создает сложное кривое и сохраняет его в файлы. Затем приложение можно собрать и запустить в Docker.

Создание консольного приложения

Чтобы создать программу Hello World, выполните следующие действия:

  1. После установки Docker убедитесь, что он использует контейнеры Linux (по умолчанию). При необходимости выберите опцию “Переключиться на контейнеры Linux” из меню Docker Desktops.
  2. В Visual Studio создайте консольное приложение NET Core 3.1.
    todo:image_alt_text
  3. Установите последнюю версию Aspose.GIS из NuGet.
    todo:image_alt_text
  4. Поскольку приложение будет запущено в Linux, необходимо установить соответствующие собственные библиотеки Linux. Начните с базового образа dotnet core sdk 3.1 и установите libgdiplus libc6-dev.
  5. После добавления всех необходимых зависимостей напишите простую программу, которая создает сложное кривое:
    .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();
                    // create an 'S' letter (starts at bottom left end)
                    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 папка на хост-машине будет смонтирована в эту папку в контейнере. Это позволит вам легко просматривать вывод, созданный Aspose.GIS в контейнере Docker.

Настройка Dockerfile

Следующим шагом является создание и настройка Dockerfile.

  1. Создайте Dockerfile и поместите его рядом с файлом решения вашего приложения. Сохраните этот файл без расширения (по умолчанию).
  2. В 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, см. примеры.

См. также