Aspose.Words'i Docker'de Çalıştırma

Mikro hizmetler, konteynerleştirmeyle birlikte teknolojilerin kolayca birleştirilmesini mümkün kılar. Docker, geliştirme yığınınızda hangi teknolojinin bulunduğuna bakılmaksızın Aspose.Words işlevselliğini uygulamanıza kolayca entegre etmenize olanak tanır.

Mikro hizmetleri hedefliyorsanız veya yığınınızdaki ana teknoloji .NET, C++ veya Java değilse ancak Aspose.Words işlevselliğine ihtiyacınız varsa veya yığınınızda zaten Docker kullanıyorsanız, o zaman Aspose.Words’i bir Docker’da kullanmak ilginizi çekebilir konteyner.

Önkoşullar

  • Sisteminizde Docker kurulu olmalıdır. Docker’in Windows veya Mac’e nasıl kurulacağı hakkında bilgi için “Ayrıca Bakınız” bölümündeki bağlantılara bakın.

  • Ayrıca aşağıda verilen örnekte Visual Studio 2017, .NET Core 2.2 SDK’nin kullanıldığını unutmayın.

Merhaba Dünya Uygulaması

Bu örnekte, “Merhaba Dünya!” anlamına gelen basit bir Merhaba Dünya konsol uygulaması yaratacaksınız. belgeyi destekler ve onu desteklenen tüm kaydetme formatlarında kaydeder. Uygulama daha sonra Docker’te oluşturulabilir ve çalıştırılabilir.

Konsol Uygulamasını Oluşturma

Merhaba Dünya programını oluşturmak için aşağıdaki adımları izleyin:

  1. Docker kurulduktan sonra Linux Konteynerlerini (varsayılan) kullandığından emin olun. Gerekirse Docker Masaüstü Bilgisayarlar menüsünden Linux kapsayıcılarına geç seçeneğini seçin.
  2. Visual Studio’te bir .NET Core konsol uygulaması oluşturun.
    net-console-application
  3. NuGet’den en son Aspose.Words sürümünü yükleyin. SkiaSharp, Aspose.Words’e bağımlı olarak kurulacaktır.
    skiasharp-dependency
  4. Uygulama Linux üzerinde çalışacağından uygun yerel Linux varlıklarının yüklenmesi gerekmektedir. Debian temel görüntüsüyle başlayın ve SkiaSharp.NativeAssets.Linux‘i yükleyin.
  5. Gerekli tüm bağımlılıklar eklendiğinde, “Merhaba Dünya!” yaratan basit bir program yazın. belgeyi destekler ve onu desteklenen tüm kaydetme formatlarında kaydeder:

“TestOut” klasörünün çıktı belgelerini kaydetmek için bir çıktı klasörü olarak belirtildiğini unutmayın. Uygulamayı Docker’te çalıştırırken, ana makinedeki bir klasör konteynerdeki bu klasöre bağlanacaktır. Bu, Aspose.Words tarafından oluşturulan çıktıyı Docker kapsayıcısında kolayca görüntülemenizi sağlayacaktır.

Dockerfile’i yapılandırma

Bir sonraki adım Dockerfile’i oluşturmak ve yapılandırmaktır.

  1. Dockerfile’i oluşturun ve uygulamanızın çözüm dosyasının yanına yerleştirin. Bu dosya adını uzantısız tutun (varsayılan).
  2. Dockerfile’te şunları belirtin:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2
WORKDIR /app
RUN apt-get update && apt-get install -y libfontconfig1
COPY . ./
RUN dotnet publish -c Release -o out
ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample/out/Aspose.Words.Docker.Sample.dll"]

Yukarıdaki, aşağıdaki talimatları içeren basit bir Dockerfile’tir:

  • Kullanılacak SDK görüntüsü. İşte .NET Core SDK 2.2 görüntüsü. Derleme çalıştırıldığında Docker onu indirecektir. SDK sürümü etiket olarak belirtilir.
  • Bir sonraki satırda belirtilen çalışma dizini.
  • Libfontconfig1’i kurma komutu kapta çalıştırılır. Bu SkiaSharp için gereklidir.
  • Her şeyi konteynere kopyalama, uygulamayı yayınlama ve giriş noktasını belirtme komutu.

Uygulamayı Docker’te Oluşturma ve Çalıştırma

Artık uygulama Docker’te oluşturulabilir ve çalıştırılabilir. Favori komut isteminizi açın, dizini uygulamanın bulunduğu klasöre (çözüm dosyasının ve Dockerfile’nin yerleştirildiği klasör) değiştirin ve aşağıdaki komutu çalıştırın:

docker build -t awtest .

Bu komut ilk kez çalıştırıldığında Docker’in gerekli görüntüleri indirmesi gerektiğinden daha uzun sürebilir. Önceki komut tamamlandıktan sonra aşağıdaki komutu çalıştırın:

docker run --mount type=bind,source=C:\Temp,target=/TestOut --rm awtest from Docker

Aspose.Words’i Destekleyen Görseller

Aspose.Words hem .NET Framework hem de .NET Core için kullanılabilir. .NET Core görüntülerinin boyutu .NET Framework görüntülerinden çok daha küçüktür; bu da .NET Core’i mikro hizmetler oluşturmak ve kapsayıcılarda kullanmak için daha iyi bir seçim haline getirir. Uygulamaları, Windows kapsayıcılarından daha hafif olan Linux Docker kapsayıcılarına (platformlar arası dağıtım için) dağıtmak mümkündür.

.NET Core SDK’nin resmi görselleri aşağıdakiler için sağlanmıştır:

-Debian 9 ve 10 -Ubuntu 18.04 ve 19.04 -Alpine 3.7 ve 3.9 -Windows Nano Server

Grafiklerle çalışmak için .NET Standard için Aspose.Words, SkiaSharp’a bağlıdır. Bu, Aspose.Words’in çalıştırılabileceği görüntüleri aşağıdakilerle sınırlar:

-Debian 9 ve 10 -Ubuntu 18.04 ve 19.04

  • Alpine 3.9

SkiaSharp, bu SkiaSharp’ta bilinen bir sorundur gibi bazı yerel bağımlılıkların bulunmamasından dolayı Windows Nano Server üzerinde çalışmaz. Sorun SkiaSharp’ın 1.68.1.1 sürümünde çözülecektir. Aspose.Words’i bir Windows kapsayıcısında çalıştırmanız gerekiyorsa .NET Framework temel görüntüsünü, SkiaSharp’a bağlı olmayan Aspose.Words’in .NET Framework sürümüyle birlikte kullanın.

SkiaSharp, yerel Skia kütüphanesini çevreleyen bir sarmalayıcıdır. SkiaSharp NuGet paketinde aşağıdaki çalışma süreleri sağlanmaktadır:

  • osx
  • tizen-armel
  • tizen-x86
  • win10-arm
  • win10-x64
  • win10-x86
  • win-x64
  • win-x86

Linux’te çalıştırmak için, aşağıda listelenen Skia kitaplığının yerel yapıları gibi ilgili yerel varlıklarla birlikte ek NuGet paketleri kullanmalısınız:

  • SkiaSharp.NativeAssets.Linux – x64 Debian tabanlı Linux dağıtımları için yerel bir Skia yapısı sağlar.
  • SkiaSharp.NativeAssets.Linux.NoDependencies – paketin libfontconfig bağımlılığı olmayan Linux dağıtımlarında kullanılması amaçlanmıştır. RHEL 7 (x64) üzerinde test edilmiştir.
  • Goelze.SkiaSharp.NativeAssets.AlpineLinux – x64 Alpine Linux 3.9 için yerel bir Skia yapısı sağlar.
  • Jellyfin.SkiaSharp.NativeAssets.LinuxArm – arm32 ve arm64 Debian tabanlı Linux dağıtımları için yerel bir Skia yapısı sağlar.

Daha fazla örnek

  1. Yukarıdaki örnekte uygulama SDK görüntüsünde çalıştırılmıştır. SDK görüntüleri çalışma zamanı görüntülerinden daha ağırdır. Aşağıdaki örnek, uygulamayı oluşturmak amacıyla SDK görüntüsünü ve onu çalıştırmak için çalışma zamanı görüntüsünü kullanmak amacıyla Docker dosyasının nasıl değiştirilmesi gerektiğini gösterir:
    FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
    WORKDIR /app
    \# copy csproj and restore as distinct layers
    COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet restore
    \# copy and publish app and libraries
    WORKDIR /app/
    COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet publish -c Release -o out
    \# copy to runtime environment
    FROM mcr.microsoft.com/dotnet/core/runtime:2.2 AS runtime
    WORKDIR /app
    \# libfontconfig1 is required to properly work with fonts in Linux.
    RUN apt-get update && apt-get install -y libfontconfig1
    RUN apt install libharfbuzz-icu0
    COPY --from=build /app/Aspose.Words.Docker.Sample/out ./
    ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
  2. Uygulamayı Ubuntu 18.04’te çalıştırmak için Dockerfile pratik olarak aynı kalır (yalnızca etiket değiştirilir):
    FROM mcr.microsoft.com/dotnet/core/sdk:2.2-bionic AS build
    WORKDIR /app
    \# copy csproj and restore as distinct layers
    COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet restore
    \# copy and publish app and libraries
    WORKDIR /app/
    COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet publish -c Release -o out
    \# copy to runtime environment
    FROM mcr.microsoft.com/dotnet/core/runtime:2.2-bionic AS runtime
    WORKDIR /app
    \# libfontconfig1 is required to properly work with fonts in Linux.
    RUN apt-get update && apt-get install -y libfontconfig1
    RUN apt install libharfbuzz-icu0
    COPY --from=build /app/Aspose.Words.Docker.Sample/out ./
    ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
  3. Uygulamayı Alpine Linux’de çalıştırmak için SkiaSharp yerel varlıklarını eklemek ve aşağıdaki Dockerfile’i kullanmak gerekir:
    FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine3.9 AS build
    WORKDIR /app
    \# copy csproj and restore as distinct layers
    COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet restore
    \# copy and publish app and libraries
    WORKDIR /app/
    COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet publish -c Release -o out
    \# copy to runtime environment
    FROM mcr.microsoft.com/dotnet/core/runtime:2.2-alpine3.9 AS runtime
    WORKDIR /app
    \# fontconfig is required to properly work with fonts in Linux.
    RUN apk update && apk upgrade && apk add fontconfig && apk add harfbuzz
    COPY --from=build /app/Aspose.Words.Docker.Sample/out ./
    ENTRYPOINT ["dotnet", "Aspose.Words.Docker.Sample.dll"]
  4. Uygulamayı RHEL 7’de çalıştırmak için SkiaSharp yerel varlıklarını eklemek ve aşağıdaki Dockerfile’yi kullanmak gerekir:
    FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
    WORKDIR /app
    \# copy csproj and restore as distinct layers
    COPY Aspose.Words.Docker.Sample/*.csproj ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet restore
    \# copy and publish app and libraries
    WORKDIR /app/
    COPY Aspose.Words.Docker.Sample/. ./Aspose.Words.Docker.Sample/
    WORKDIR /app/Aspose.Words.Docker.Sample
    RUN dotnet publish -c Release -o out
    \# copy to runtime environment
    FROM kkamberta/dotnet-21-rhel7 AS runtime
    WORKDIR /app
    COPY --from=build /app/Aspose.Words.Docker.Sample/out ./
    ENTRYPOINT ["/opt/rh/rh-dotnet21/root/usr/bin/dotnet", "Aspose.Words.Docker.Sample.dll"]

Ayrıca bakınız