Запуск приложения с FastReport .NET в Docker под Linux

17.11.2021

Docker – это программная платформа для быстрой разработки, тестирования и развертывания приложений. Благодаря нему мы можем на одном сервере разместить множество контейнеров. Под контейнерами понимается совокупность нашего приложения, его зависимостей и образа. Не забываем, что образ - это шаблон, который представляет из себя некий слепок файловой системы. Освежили память некоторыми терминами, теперь можно и поговорить о том, как поднять FastReport.Core + FastReport.Web в нашем собственном контейнере.

Для начала нам понадобиться установить сам Docker на любой дистрибутив Linux, в нашем случае это будет Ubuntu 20.04. Об установке Docker на Linux вы можете прочитать в этой статье. После установки и проверки переходим к следующему шагу.

Сейчас нам нужно создать DockerFile. Он представляет из себя обычный текстовый документ, содержащий все команды для сборки образа. Создавать и редактировать этот файл можно как в обычном текстовом редакторе, так и в том же VS code. Кстати, в VS code есть удобный плагин docker, благодаря чему написание и редактирование немного упрощается.

Пример DockerFile:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
 
RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so
RUN apt-get update \
 && apt-get install -y --allow-unauthenticated \
 libc6-dev \
 libgdiplus \
 libx11-dev \
 && rm -rf /var/lib/apt/lists/*
ENV DISPLAY :99
 
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["fastreport_net", "FastReport.Net"]
RUN dotnet restore "FastReport.Net/Demos/Core/FastReport.Core.Web21.MVC/FastReport.Core.Web21.MVC.csproj"
COPY . .
WORKDIR "/src/FastReport.Net/Demos/Core/FastReport.Core.Web21.MVC"
RUN dotnet build "FastReport.Core.Web21.MVC.csproj" -c Release -o /app
 
FROM build AS publish
RUN dotnet publish "FastReport.Core.Web21.MVC.csproj" -c Release -o /app
 
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "FastReport.Core.Web21.MVC.dll"]
 

Этот докер файл разворачивает образ Demo приложения FastReport.Core.Web21.MVC, в котором используется FastReport.Web и FastReport.Core. Пощупать его самостоятельно вы можете по следующей ссылке, либо при скачивании FastReport.NET найдите директорию Demos\Core\FastReport.Core.Web21.MVC.

После написания DockerFile его непременно нужно собрать. Делается это очень просто. Запускаем терминал из директории, в которой находится DockerFile и вписываем в него команду:

sudo docker build

После успешной сборки нужно развернуть контейнер с помощью команды: 

sudo docker run -d -p 8080:80 build/fastreport 

В этой команде мы пробрасываем порт 8080 и даем название образу “build/fastreport”.

После успешного старта контейнера открываем http://localhost:8080/. Затем переходим на страницу своего приложения, если были выполнены и решены все зависимости, то перед нами предстанет ваш проект:

Готовый проект

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

28 октября 2024

Как настроить WSL 2 для работы с FastReport и FastCube

В этой статье попробуем вместе разобраться, как настроить WSL 2 для работы с компонентами FastReport и FastCube в Lazarus для Linux.
4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.
22 марта 2023

Создание PDF отчета в JetBrains Rider (C#) на «Альт Рабочая станция К» 10

В этой статье мы взглянем на платформу .NET в «Альт Рабочая станция К» 10 и создадим отчет, который можно экспортировать в PDF.