Как запустить SautinSoft.Document в Docker


SautinSoft.Document можно использовать внутри докер-контейнеров, на которых запущены образы .NET Docker. Чтобы использовать Docker, Вы должны сначала установить Docker Desktop.
В данном примере мы будем использовать Visual Studio 2019, .NET Core 3.0 SDK.

Docker Desktop — это простое в установке приложение для среды Mac или Windows (Linux), которое позволяет создавать и совместно использовать контейнерные приложения и микросервисы. Docker Desktop включает Docker Engine, клиент Docker CLI, Docker Compose, Notary, Kubernetes и Credential Helper. Более подробно о данных технологиях можно прочитать в интернете.

Микросервисы в сочетании с контейнеризацией позволяют легко комбинировать технологии. Docker позволяет легко интегрировать функциональность SautinSoft.Document в Ваше приложение, независимо от того, какая технология используется в Вашем стеке разработки.

Вы можете создать Docker контейнеры, используя наши Примеры.
Примечание. Так как Windows и Linux имеют разные относительные пути к файлу, Вам потребуется внести изменения в исходный файл и полученный файл.

1. Создание Console App (.NET Core)

Как создать простое .NET приложение, можно прочитать здесь.
Предположим, Вы только что создали проект .NET Core, который конвертирует «PDF в DOCX» и назвали его «DockerDemo».

В данном случае проект здесь:

SautinSoft.Document может помочь Вашему приложению конвертировать документ из одного формата в другой.
Вам необходимо только Загрузить() документ and Сохранить() в желаемые результат:


            DocumentCore dc = DocumentCore.Load("...");
            dc.Save("....");

В нашем примере кода: загружаем Book.pdf и сохраняем его в Book.docx


					using System;
using SautinSoft.Document;

namespace SautinSoft.Document.Docker.Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Load Book.pdf 
            DocumentCore dc = DocumentCore.Load("/TestOut/Book.pdf", new PdfLoadOptions());
            // Save Book.docx
            dc.Save("/TestOut/Book.docx", new DocxSaveOptions());
            // Displaying a message about successful conversion
            Console.WriteLine("Converted - [OK]");
        }
    }
}
					

Обратите внимание, что папка «TestOut» указана как выходная папка для сохранения выходных документов. При запуске приложения в Docker к этой папке в контейнере будет смонтирована папка на хост-машине.
Это позволит Вам легко просматривать выходные данные, созданные SautinSoft.Document, в контейнере Docker.
В моем случае Book.pdf помещен в "D:\Download".

2. Конфигурация DockerFile

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

1. Создайте новый файл с именем «DockerFile» и поместите его рядом с файлом проекта вашего приложения (csproj или vbproj). Оставьте это имя файла без расширения (по умолчанию).
2. В DockerFile укажите следующее:


FROM mcr.microsoft.com/dotnet/runtime:3.1 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/nightly/sdk:3.1 AS build
WORKDIR /src
COPY ["DockerDemo.csproj", ""]
RUN dotnet restore "./DockerDemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish

FROM base AS final

# Update package sources to include supplemental packages (contrib archive area).
RUN sed -i 's/main/main contrib/g' /etc/apt/sources.list

# Downloads the package lists from the repositories.
RUN apt-get update

# Install System.Drawing.Common dependency.
RUN apt-get install -y libgdiplus

# Install Microsoft TrueType core fonts.
RUN apt-get install -y ttf-mscorefonts-installer

# Or install Liberation TrueType fonts.
# RUN apt-get install -y fonts-liberation

# Or some other font package...

WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet",  "DockerDemo.dll"]

При создании файлов PDF или Word с изображениями, System.Drawing.Common используется для обработки данных изображения, для чего требуется пакет libgdiplus в контейнере Linux. При создании/чтении файлов PDF файлы шрифтов должны присутствовать в контейнере также. Официальные образы Linux для .NET не будут иметь установленных шрифтов. Итак, Вам нужно скопировать необходимые файлы шрифтов в контейнер Linux или установить пакет шрифтов, например ttf-mscorefonts-installer.
Приведенный выше DockerFile содержит инструкции по установке: libgdiplus, ttf-mscorefonts-installer.

Хорошо. Мы создали простой проект и подготовили DockerFile. Теперь нам нужно запустить его с помощью Docker.

3. Создание и запуск приложения в Docker

Теперь приложение можно собрать и запустить в Docker.

Обратите внимание (убедитесь) что Docker запущен! Если текущий статуs "Stop", "Failed", "Pause", пожалуйста, перезапустите Docker.


Откройте Вашу любимую командную строку (cmd.exe, powershell и так далее), измените каталог на папку с приложением (папка, в которой находятся файл проекта и DockerFile) и запустите следующую команду:

Введите следующую команду, чтобы создать образ докера (docker image)


            docker build -t dockerdemo -f DockerFile .

Первом выполнение этой команды может занять больше времени, так как Docker необходимо загрузить необходимые образы.
После завершения предыдущей команды выполните следующую команду:


            docker run --mount type=bind,source="YourPath",target=/TestOut --rm dockerdemo from Docker

В моем случае "ВашПуть" - "D:\Download". Обратите внимание на аргумент mount, потому что, как упоминалось ранее, папка на хост-машине монтируется в папку контейнера, чтобы легко увидеть результаты выполнения приложения.
Пути в Linux чувствительны к регистру. Полный путь в моем случае: "D:\Download\TestOut".

Примечание. Если у Вас возникают ошибки запуска и создания образа, проверьте следующие параметры Docker:

 

После выполнения команды вы получите результат в виде сконвертированного документа.



Скачать: Все примеры кода + DockerFile.

Запустить приложение .NET Core в Docker очень просто. Самое главное, он легко интегрируется в Ваше приложение и универсален под любую платформу.

Спасибо


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.com или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.