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 中的一个已知问题。该问题将在 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"]

    点击复制

也可以查看

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

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP