彩票走势图

logo Aspose中文文档
文档彩票走势图>>Aspose中文文档>>如何在 Docker 中运行 Aspose.Words

如何在 Docker 中运行 Aspose.Words


Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

如果您的目标是微服务,或者您的堆栈中的主要技术不是 .NET、C++ 或 Java,但您需要 Aspose.Words 功能,或者您已经在堆栈中使用 Docker,那么您可能有兴趣使用 Aspose .Docker 容器中的单词。

微服务与容器化相结合使得轻松组合技术成为可能。Docker 允许您轻松地将 Aspose.Words 功能集成到您的应用程序中,无论您的开发堆栈中采用什么技术。

Aspose.words 最新下载

Aspose技术交流群(761297826

先决条件
  • Docker 必须安装在您的系统上。有关如何在 Windows 或 Mac 上安装 Docker 的信息,请参阅“另请参阅”部分中的链接。

  • 下面提供的示例中使用了 Visual Studio 2017、.NET Core 2.2 SDK。

你好世界应用程序

在此示例中,您将创建一个简单的 Hello World 控制台应用程序,用于生成“Hello World!” 文档并将其保存为所有支持的保存格式。然后可以在 Docker 中构建并运行该应用程序。

创建控制台应用程序

要创建 Hello World 程序,请按照以下步骤操作:

  1. 安装 Docker 后,请确保它使用 Linux 容器(默认)。如有必要,请从 Docker 桌面菜单中选择切换到 Linux 容器选项。

  2. 在 Visual Studio 中,创建一个 .NET Core 控制台应用程序。
    aspose下载

  3. 从 NuGet 安装最新的 Aspose.Words 版本。SkiaSharp 将作为 Aspose.Words 的依赖项安装。
    aspose下载

  4. 由于应用程序将在 Linux 上运行,因此必须安装适当的本机 Linux 资产。从 Debian 基础映像开始并安装 SkiaSharp.NativeAssets.Linux。

  5.  添加所有必需的依赖项后,编写一个简单的程序来创建“Hello World!” 文档并将其保存为所有支持的保存格式:

using Aspose.Words;
using System;
namespace Aspose.Words.Docker.Sample
{
class Program
{
static void Main(string[] args)
{
// Create document and save it in all available formats.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Hello from Aspose.Words!!!");
foreach (SaveFormat sf in Enum.GetValues(typeof(SaveFormat)))
{
if (sf != SaveFormat.Unknown)
{
try
{
// The folder specified will be mounted as a volume when run the application in Docker image.
doc.Save(string.Format("/TestOut/out{0}", FileFormatUtil.SaveFormatToExtension(sf)), sf);
Console.WriteLine("Saving {0}\t\t[OK]", sf);
}
catch
{
Console.WriteLine("Saving {0}\t\t[FAILED]", sf);
}
}
}
}
}
}

点击复制

“TestOut”文件夹被指定为用于保存输出文档的输出文件夹。当在Docker中运行应用程序时,主机上的一个文件夹将被挂载到容器中的这个文件夹中。这将使您能够轻松查看 Docker 容器中 Aspose.Words 生成的输出。

配置 Dockerfile

下一步是创建和配置 Dockerfile。

  1. 创建 Dockerfile 并将其放置在应用程序的解决方案文件旁边。保留此文件名,不带扩展名(默认)。 

  2. 在 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", "Aspse.Words.Docker.Sample/out/Aspse.Words.Docker.Sample.dll"]

点击复制

上面是一个简单的Dockerfile,其中包含以下指令:

  •  要使用的 SDK 镜像。这是 .NET Core SDK 2.2 映像。Docker 将在构建运行时下载它。SDK的版本被指定为标签。

  • 工作目录,在下一行中指定。

  •  安装 libfontconfig1 的命令在容器中运行。这是 SkiaSharp 所要求的。

  • 该命令将所有内容复制到容器、发布应用程序并指定入口点。

在 Docker 中构建并运行应用程序

现在可以在 Docker 中构建并运行该应用程序。打开您最喜欢的命令提示符,将目录更改为应用程序所在的文件夹(放置解决方案文件和 Dockerfile 的文件夹)并运行以下命令:

docker build -t awtest .

点击复制

第一次执行该命令可能需要更长的时间,因为 Docker 需要下载所需的镜像。上一个命令完成后,运行以下命令:

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

点击复制

请注意挂载参数,因为如前所述,主机上的文件夹被挂载到容器的文件夹中,以便轻松查看应用程序执行的结果。Linux 中的路径区分大小写。

支持 Aspose.Words 的图像

Aspose.Words 可用于 .NET Framework 和 .NET Core。.NET Core 映像的大小比 .NET Framework 映像小得多,这使得 .NET Core 成为创建微服务和在容器中使用的更好选择。可以将应用程序部署到 Linux Docker 容器(用于跨平台部署),它比 Windows 容器更轻。

.NET Core SDK 的官方映像提供用于:

  • Debian 9 and 10

  • Ubuntu 18.04 and 19.04

  • Alpine 3.7 and 3.9

  • Windows Nano Server

为了处理图形,Aspose.Words for .NET Standard 依赖于 SkiaSharp。这限制了 Aspose.Words 可以运行的图像如下:

  • Debian 9 and 10

  • Ubuntu 18.04 and 19.04

  • Alpine 3.9

由于缺少一些本机依赖项,SkiaSharp 无法在 Windows Nano Server 上运行,。该问题将在 SkiaSharp 1.68.1.1 版本中得到解决。如果您需要在 Windows 容器中运行 Aspose.Words,请将 .NET Framework 基础映像与 .NET Framework 版本的 Aspose.Words 一起使用,该版本不依赖于 SkiaSharp。

SkiaSharp 是原生 Skia 库的包装器。SkiaSharp NuGet 包中提供了以下运行时:

  • osx

  • tizen-armel

  • tizen-x86

  • win10-arm

  • win10-x64

  • win10-x86

  • win-x64

  • win-x86

要在 Linux 中运行它,您应该使用其他 NuGet 包以及相应的本机资源,例如 Skia 库的本机构建,如下所示:

  • SkiaSharp.NativeAssets.Linux – 为基于 x64 Debian 的 Linux 发行版提供本机 Skia 构建。

  • SkiaSharp.NativeAssets.Linux.NoDependency – 该软件包旨在用于不具有 libfontconfig 依赖项的 Linux 发行版。在 RHEL 7 (x64) 上测试。

  • Goelze.SkiaSharp.NativeAssets.AlpineLinux – 为 x64 Alpine Linux 3.9 提供原生 Skia 构建。

  • Jellyfin.SkiaSharp.NativeAssets.LinuxArm – 为基于arm32和arm64 Debian的Linux发行版提供本机Skia构建。

更多示例
  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"]

    点击复制

  2. 要在 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"]

    点击复制

  3. 要在 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"]

    点击复制

  4. 要在 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"]

    点击复制

也可以查看
  • 选项

  • 安装

  • 的其他信息

  • 使用其他 NuGet 包: 、 、 、


如需下载产品Aspose.Words ,请点击产品名进入下载页面

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP