Як запустити Aspose.CAD у Docker

Попередні вимоги

  • Docker повинен бути встановлений на вашій системі. Для отримання інформації про те, як встановити Docker на Windows або Mac, зверніться до посилань у розділі “Дивіться також”.
  • Visual Studio 2022.
  • У прикладі використовується .NET 6 SDK.

Додаток Hello World

У цьому прикладі ви створюєте простий консольний додаток Hello World, який малює еліпс і зберігає його як зображення. Додаток потім можна зібрати та запустити в Docker.

Створення консольного додатка

Щоб створити програму Hello World, виконайте наступні кроки:

  1. Після встановлення Docker переконайтеся, що він використовує контейнери Linux (за замовчуванням). Якщо необхідно, виберіть опцію Переключити на контейнери Linux у меню Docker Desktop.
  2. У Visual Studio створіть консольний додаток .NET 6.
    Діалог проекту консольного застосунку .NET 6
  3. Встановіть останню версію Aspose.CAD з NuGet.
    Aspose.CAD на NuGet
  4. Оскільки додаток буде запущено на Linux, можливо, вам буде потрібно встановити додаткові шрифти. Ви можете віддати перевагу ttf-mscorefonts-installer.
  5. Коли всі необхідні залежності додані, напишіть просту програму, яка створює еліпс і зберігає його як зображення:
using (var img = Aspose.CAD.Image.Load(System.IO.Directory.GetCurrentDirectory() + "/input.dxf"))
{
	img.Save(Path.Combine("TestOut", "output.png"), new Aspose.CAD.ImageOptions.PngOptions());
}

Зверніть увагу, що папка “TestOut” вказується як папка для збереження вихідних документів. Під час виконання програми в Docker папка на хост-машині буде змонтована до цієї папки у контейнері. Це дозволить вам легко переглядати вихідні дані, згенеровані Aspose.CAD у контейнері Docker.

Налаштування Dockerfile

Наступний крок — створити та налаштувати Dockerfile.

  1. Створіть Dockerfile і розмістіть його поряд з файлом рішення вашого додатку. Залиште це ім’я файлу без розширення (за замовчуванням).
  2. У Dockerfile вкажіть:
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS builder
WORKDIR /app

COPY /Aspose.CAD.Docker.Sample/*.csproj ./Aspose.CAD.Docker.Sample/
RUN dotnet restore ./Aspose.CAD.Docker.Sample/

COPY /Aspose.CAD.Docker.Sample ./Aspose.CAD.Docker.Sample/

WORKDIR /app/Aspose.CAD.Docker.Sample
RUN dotnet publish -c Release -o publish

FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=builder /app/Aspose.CAD.Docker.Sample/publish ./

RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y libgdiplus
RUN apt-get install -y libc6-dev 
RUN ln -s /usr/lib/libgdiplus.so/usr/lib/gdiplus.dll

RUN sed -i'.bak' 's/$/ contrib/' /etc/apt/sources.list
RUN apt-get update; apt-get install -y ttf-mscorefonts-installer fontconfig

RUN apt-get install fonts-freefont-ttf

ENV ASPNETCORE_URLS=http://+:80
ENV ASPNETCORE_ENVIRONMENT=Release

EXPOSE 80
ENTRYPOINT ["dotnet", "Aspose.CAD.Docker.Sample.dll"]

Наведеного вище — це простий Dockerfile, який містить наступні команди:

  • Зображення SDK, яке буде використовуватися. Тут це зображення Net 6. Docker завантажить його під час виконання зборки. Версія SDK вказується як тег.
  • Після цього може знадобитися встановити шрифти, оскільки зображення SDK містить дуже мало шрифтів. Також ви можете використовувати локальні шрифти, скопійовані в образ Docker.
  • Робочий каталог, який вказується в наступному рядку.
  • Команда для копіювання всього в контейнер, публікації програми та визначення точки входу.

Збірка та запуск програми в Docker

Тепер програму можна зібрати та запустити в Docker. Відкрийте улюблений командний рядок, змініть каталог на папку з додатком (папка, де знаходиться файл рішення та Dockerfile) і виконайте наступну команду:

docker build -t dockerfile .

Перший раз, коли ця команда виконується, це може зайняти більше часу, оскільки Docker повинен завантажити необхідні зображення. Коли попередня команда завершиться, виконайте наступну команду:

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

Більше прикладів

Для отримання додаткових прикладів того, як можна використовувати Aspose.CAD у Docker, дивіться приклади.

Дивіться також