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 производит развертывание буквально с помощью двух команд, а контейнеры занимают намного меньше места, чем образы виртуальных машин, что дает нам большую экономию места и времени.