Report Server in einem Windows Docker-Container zur Verfügung stellen

Einleitung

Docker-Container erfreuen sich immer größerer Beliebtheit. Auch der combit Report Server lässt sich in einem Windows Docker-Image installieren und als Container zur Verfügung stellen. Mit der folgenden Anleitung können Sie den Container selbst erstellen.

Vorbereitende Schritte

Sie benötigen zunächst die folgenden Dateien:

ZIP-Datei mit Konfigurationsdateien
Laden Sie die nachfolgende ZIP-Datei mit den Konfigurationsdateien herunter und entpacken Sie diese in ein beliebiges Verzeichnis.
combit Report Server - Docker-Container.zip (1.3 KB)

Folgende Dateien sind darin enthalten:

  • Dockerfile
  • RunDocker.bat
  • web.config

Report Server Setup
Laden Sie das Report Server Setup (als Windows Installer MSI-Datei) herunter und kopieren dieses in das Verzeichnis, in das Sie die ZIP-Datei entpackt haben.
Download (combit Report Server 29)
Download (combit Report Server 28)
Download (combit Report Server 27)

ASP.NET Core Runtime Hosting Bundle
Laden Sie das neueste verfügbare ASP.NET Core Runtime Hosting Bundle von Microsoft herunter und kopieren dieses in das Verzeichnis, in das Sie die ZIP-Datei entpackt haben.
Download (combit Report Server 28-29)
Download (combit Report Server 27)

Container erstellen

Dockerfile anpassen

Das Dockerfile definiert die Schritte zur Erzeugung des Docker-Images. Öffnen Sie die Datei in einem beliebigen Text-Editor. Die Datei hat folgenden Aufbau:

# using a iis image speeds up the image build as IIS takes longer to install than the AspNetCoreModule
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019

SHELL ["cmd", "/S", "/C"]

# Create RS Cache folder
RUN mkdir "C:\ProgramData\combit\RS Cache"

SHELL ["powershell", "-command"]
COPY dotnet-hosting-*-win.exe /
COPY RS??ReportServerSetup.msi /

# Set shell to bare cmd.exe for installs
SHELL ["cmd", "/S", "/C"]

RUN start c:\dotnet-hosting-*-win.exe /q OPT_NO_RUNTIME=1 OPT_NO_SHAREDFX=1 OPT_NO_X86=1 /norestart
RUN msiexec /i C:\RS??ReportServerSetup.msi /qn ISDOCKER=1 IACCEPTCOMBITLICENSETERMS=True INSTALLDIR="C:\Program Files\combit\combit Report Server"

SHELL ["powershell", "-command"]
COPY ["./Fonts/*.ttf", "C:/Program Files/combit/combit Report Server/WebUI/Fonts/"]
COPY ["web.config", "C:/Program Files/combit/combit Report Server/WebUI/web.config"]

Die FROM Anweisung definiert das verwendete Basis-Image von Microsoft. Es handelt sich hier um ein Windows Server Core 2019 Image, welches bereits den IIS für das Hosten des Report Servers enthält. Falls Ihre Windows Host Version 21H2 oder neuer ist, können Sie auch die Version 2022 des Windows Core Servers verwenden:
mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022

Folgende Änderungen müssen Sie im Dockerfile noch vornehmen:

  1. RS??ReportServerSetup.msi: Ersetzen Sie hier die Platzhalter ?? durch die Version der heruntergeladenen Datei (z. B. RS28ReportServerSetup.msi).
  2. dotnet-hosting-*-win.exe: Ersetzen Sie hier den Platzhalter * durch die Version der heruntergeladenen Datei (z. B. dotnet-hosting-6.0.7-win.exe).

Fonts installieren

Da in den Windows Server Core Docker-Images meistens nur der Font Lucon vorhanden ist, müssen für die Generierung der Berichte die nötigen Fonts im Container zur Verfügung gestellt werden. Erstellen Sie dazu im Verzeichnis der anderen Dateien einen Ordner Fonts und kopieren Sie hier die benötigten Schriftarten hinein. Über die folgende Anweisung im Dockerfile werden diese automatisch in das Docker-Image kopiert:

COPY ["./Fonts/*.ttf", "C:/Program Files/combit/combit Report Server/WebUI/Fonts/"]

Beim Start des Report Servers werden diese dann für die aktuelle Session installiert.

RunDocker.bat ausführen

Führen Sie nun die Datei RunDocker.bat als Administrator aus. Hierdurch wird nun anhand des Dockerfiles das Docker-Image erstellt und der Container rscontainer gestartet. Rufen Sie anschließend im Browser folgende Adresse auf, um die Installation und Konfiguration des Report Servers abzuschließen:

http://localhost:8080/combitreportserver

1 Like