איך לרוץ Aspose.Words פנימה Docker

Microservices, בשילוב עם מיכליזציה מאפשר לשלב בקלות טכנולוגיות. Docker מאפשר לך להשתלב בקלות Aspose.Words פונקציונליות ליישום שלך, ללא קשר למה הטכנולוגיה נמצאת בערימה הפיתוח שלך.

אם אתה מכוון מיקרו-שירותים, או אם הטכנולוגיה העיקרית בערימה שלך אינה .NET, C++ או Java, אבל אתה צריך Aspose.Words פונקציונליות, או אם אתה כבר משתמש Docker בערימה שלך, אתה יכול להיות מעוניין להשתמש Aspose.Words בתוך A Docker מיכל

Prerequisites

    • Docker יש להתקין את המערכת שלך. למידע על איך להתקין Docker על Windows או Mac, מתייחס לקישורים בסעיף “ראה גם”.
    • כמו כן, שימו לב Visual Studio 2017 .NET Core 2.2 2.2 2.2 2.2 SDK הוא משמש בדוגמה, מסופק למטה.

Hello World Application

בדוגמה זו, אתה יוצר יישום קונסולת Hello World שהופך את מסמך “Hello World!”, ומציל אותו בכל הפורמטים הנתמכות. לאחר מכן ניתן לבנות את היישום ולהפעיל Docker.

יצירת יישום הקונסולה

כדי ליצור את תוכנית Hello World, בצע את השלבים הבאים: 1.1 1. פעם Docker מותקן, ודא כי הוא משתמש Linux מכיל (default). במידת הצורך, בחר את ה-Switch עד Linux אפשרות מכולות Docker תפריט שולחן העבודה 1.1 1. In In In Visual Studio, ליצור .NET Core יישום הקונסולה
net-console-application
1.1 1. התקן את האחרון Aspose.Words גרסה NuGet. סקי שארפ יותקן כתלויות Aspose.Words.
skiasharp-dependency
1.1 1. מאז היישום יופעל Linux הילידים המתאימים Linux יש להתקין נכסים. התחל עם Debian תמונת בסיס והתקנה SkiaSharp.NativeAssets.Linux. 1.1 1. כאשר כל התלויים הנדרשים מתווספים, כתבו תוכנית פשוטה שיוצרת מסמך “Hello World” ומצילים אותו בכל הפורמטים הנתמכות:

שימו לב כי התיקיה “TestOut” מוגדרת כתיקייה פלטה לשמירת מסמכי פלט. בעת הפעלת היישום ב Docker תיקיה על המכונה המארחת תוצב לתיקיה זו במיכל. זה יאפשר לך לראות בקלות את הפלט שנוצר על ידי Aspose.Words בתוך Docker מיכל

לתפוס a a Dockerfile

השלב הבא הוא ליצור ולהגדיר את Dockerfile.

1.1 1. יצירת Dockerfile ולמקם אותו ליד קובץ הפתרון של היישום שלך. שמור את שם הקובץ ללא הרחבה (ה ברירת המחדל). 1.1 1. בתוך Dockerfile, תגית:

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"]

מלמעלה זה פשוט Dockerfile, אשר מכיל את ההוראות הבאות:

  • The SDK תמונה לשימוש הנה הוא .NET Core SDK 2.2 תמונה Docker להוריד אותו כאשר הבניין מנוהל. הגרסה של SDK הוא מוגדר כתג.
    • מנהל העבודה, אשר מוגדר בשורה הבאה.
    • הפקודה להתקין libfontconfig1 מופעלת במיכל. זה נדרש על ידי SkiaSharp.
    • הפקודה להעתיק הכל כדי מכולה, לפרסם את היישום, ולקבוע את נקודת הכניסה.

לבנות ולהפעיל את הבקשה Docker

עכשיו ניתן לבנות את היישום ולהפעיל Docker. פתח את בקשת הפקודה האהובה עליך, לשנות את התיקייה עם היישום (folder שבו קובץ הפתרון ואת קובץ הפתרון. Dockerfile הם מוצבים) ועושים את הפקודה הבאה:

docker build -t awtest .

בפעם הראשונה שהמפקדה הזו מבוצעת, היא עלולה להימשך זמן רב יותר. Docker צריך להוריד את התמונות הנדרשות. לאחר השלמת הפקודה הקודמת, בצע את הפקודה הבאה:

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

תמונות תמיכה Aspose.Words

Aspose.Words זמין עבור שניהם .NET Framework ו .NET Core. The The The .NET Core תמונות קטנות בהרבה בגודל מאשר .NET Framework תמונות, מה שעושה .NET Core בחירה טובה יותר ליצירת מיקרו-שירותים לשימוש במיכלים. ניתן לפרוס יישומים Linux Docker מכולות (עבור פריסת cross-platform), שהן קלות יותר מאשר Windows מיכלים

תמונות רשמיות עבור .NET Core SDK ניתן ל:

    • Debian 9 ו-10
    • Ubuntu 18.04 ו-19.04
    • Alpine 3.7 ו 3.9
    • Windows ננו Server

לעבוד עם גרפיקה, Aspose.Words עבור .NET Standard תלוי ב- SkiaSharp. זה מגביל את התמונות Aspose.Words ניתן לרוץ אל הבאים:

    • Debian 9 ו-10
    • Ubuntu 18.04 ו-19.04
  • Alpine 3.9

סקינבל לא עובד Windows ננו Server בשל חוסר תלות מקומית, נושא ידוע ב- SkiaSharp. הבעיה תיפתר ב-1.68.1.1 גירסה של SkiaSharp. אם אתה צריך לרוץ Aspose.Words בתוך A Windows מיכל, השתמש .NET Framework תמונת בסיס עם .NET Framework גירסה של Aspose.Wordsמה שלא תלוי ב- SkiaSharp.

SkiaSharp הוא עטופה סביב ספריית סקיה Native. זמני הריצה הבאים מסופקים ב- SkiaSharp NuGet חבילה:

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

לרוץ את זה פנימה Linux, עליך להשתמש נוסף NuGet חבילות עם הנכסים המקומיים המקבילים, כגון Native Building of Skia Library, המפורטות להלן:

    • SkiaSharp.NativeAssets.Linux מספק בניין Native Skia עבור x64 Debian מבוסס Linux הפצה.
    • SkiaSharp.NativeAssets.Linux.NoDependencies החבילה אמורה לשמש Linux הפצה שאין לה את התלות של ה- libfontconfig. נבדק על RHEL 7 (x64)
    • Goelze.SkiaSharp.NativeAssets.AlpineLinux מספק בניין Native Skia עבור x64 Alpine Linux 3.9.
    • Jellyfin.SkiaSharp.NativeAssets.LinuxArm - מספק בניין Native Skia עבור הזרוע 32 וזרוע64 Debian מבוסס Linux הפצה.

דוגמאות נוספות

1.1 1. בדוגמה לעיל, היישום הופעל ב SDK תמונה SDK תמונות הן כבדות יותר מאשר תמונות של זמן ריצה. הדוגמה שלמטה מציגה כיצד Docker יש לשנות את הקובץ על מנת להשתמש SDK תמונה כדי לבנות את היישום, ואת תמונת הזמן לרוץ זה:

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"]
1.1 1. כדי להפעיל את היישום Ubuntu 18.04, Dockerfile נשאר זהה (רק התג משתנה):
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"]
1.1 1. כדי להפעיל את היישום Alpine Linux, יש צורך להוסיף את הנכסים הילידים של SkiaSharp ולהשתמש הבאים Dockerfile:
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"]
1.1 1. כדי להפעיל את היישום RHEL 7, יש צורך להוסיף את נכסי ה- SkiaSharp ולהשתמש בהם בהמשך Dockerfile:
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"]

ראה גם