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 имеют разные относительные пути к файлу, Вам потребуется внести изменения в исходный файл и полученный файл.
Как создать простое .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 к этой папке в контейнере будет смонтирована папка на хост-машине.Следующим шагом является создание и настройка файла 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.
Теперь приложение можно собрать и запустить в 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:
После выполнения команды вы получите результат в виде сконвертированного документа.
Запустить приложение .NET Core в Docker очень просто. Самое главное, он легко интегрируется в Ваше приложение и универсален под любую платформу.
Спасибо
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу [email protected] или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже: