Skip to Content
Neue Version 12 verfügbar 🎉

Docker

Mit Docker lässt sich der Babel Licensing Service zu Testzwecken bequem und effizient ausführen. Docker stellt eine schlanke, isolierte Umgebung bereit, den Container, der den Babel Licensing Service mit allen seinen Abhängigkeiten kapselt. So können Sie den Dienst auf verschiedenen Systemen bereitstellen und testen, ohne sich um Kompatibilitätsprobleme oder Konflikte mit der Hostumgebung kümmern zu müssen.

Voraussetzungen

  1. Docker Desktop 
  2. Zip-Paket des Babel Licensing Service (babel_service_net80_x.y.z.w.zip), ein Paket für beide Editionen
  3. Lizenzdatei für Babel Licensing Server oder Data Center (babel.licenses)

Docker muss installiert sein, bevor Sie beginnen. Laden Sie es von der offiziellen Website von Docker  herunter und folgen Sie der Installationsanleitung für Ihr Betriebssystem.

Die folgenden Schritte installieren den Babel Licensing Service unter Docker.

Das Dockerfile erstellen

Um die Umgebung vorzubereiten, in der Docker das Image des Babel Licensing Service erstellt, führen Sie die folgenden Schritte aus.

Arbeitsordner anlegen

Legen Sie auf Ihrem lokalen Rechner einen Ordner für die Dateien des Babel Licensing Service an. Diese Anleitung nennt ihn den „Arbeitsordner“.

Dienstdateien kopieren

Kopieren Sie das Zip-Archiv des Babel Licensing Service und die Datei babel.licenses in den Arbeitsordner aus dem vorherigen Schritt.

Archiv entpacken

Entpacken Sie den Inhalt des Zip-Archivs des Babel Licensing Service in einen Unterordner namens „babel“ im Arbeitsordner.

Dockerfile erstellen

Erstellen Sie im Arbeitsordner mit einem beliebigen Texteditor oder einer IDE eine neue Datei namens „Dockerfile“.

Inhalt des Dockerfiles einfügen

Kopieren Sie den folgenden Inhalt in die Datei „Dockerfile“ und speichern Sie sie.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 as runtime # Expose service ports EXPOSE 5005 # Set working directory WORKDIR /var/www/babel-lic # Copy babel licensing service files to working directory COPY /babel . # Copy license file to working directory COPY /babel.licenses . # Set entrypoint ENTRYPOINT [ "dotnet", "Babel.Licensing.Service.dll" ]

Der Inhalt im Einzelnen:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 as runtime

Diese Zeile gibt das Basisimage des Docker-Containers an. Hier ist es das Image der ASP.NET-Laufzeit aus der Container Registry von Microsoft.

EXPOSE 5005

Die Anweisung EXPOSE legt fest, dass der Container diesen Port für den Hostrechner freigibt und damit den Zugriff von außen erlaubt.

WORKDIR /var/www/svc/babel

Die Anweisung WORKDIR setzt das Arbeitsverzeichnis im Container auf /var/www/svc/babel. An diesem Ort werden die nachfolgenden Befehle ausgeführt.

COPY /babel .

Diese Zeile kopiert den Inhalt des Verzeichnisses babel (mit den Dateien des Babel Licensing Service) aus dem Arbeitsordner in das Arbeitsverzeichnis /var/www/svc/babel des Containers.

COPY /babel.licenses .

Entsprechend kopiert diese Zeile die Datei babel.licenses aus dem Buildkontext in das Arbeitsverzeichnis des Containers.

ENTRYPOINT [ "dotnet", "Babel.Licensing.Service.dll" ]

Die Anweisung ENTRYPOINT gibt den Befehl an, der beim Start des Containers ausgeführt wird. Hier ist es der Befehl dotnet mit Babel.Licensing.Service.dll als Einstiegspunkt des Babel Licensing Service.

Dieses Dockerfile richtet die nötige Umgebung ein, gibt den erforderlichen Port frei, kopiert die Dienstdateien und die Lizenzdatei und legt den Einstiegspunkt des Babel Licensing Service fest.

Das mit Docker erstellte Image können Sie zusammen mit Docker Compose verwenden, um den Babel Licensing Service bereitzustellen.

Docker Compose

Bisher haben wir Docker angewiesen, das Image zu erstellen, das den Babel Licensing Service ausführt. Eine Datenbank startet diese Konfiguration aber noch nicht.

Um die vollständige Einrichtung des Babel Licensing Service einschließlich der benötigten Datenbank zu konfigurieren, legen wir im Arbeitsordner eine neue Datei namens docker-compose.yml an. Fügen Sie der Datei docker-compose.yml den folgenden Inhalt hinzu:

version: '3.7' services: # Database db: image: mysql:latest volumes: - type: volume source: dbdata target: /var/lib/mysql restart: always ports: - '6610:3306' environment: MYSQL_ROOT_PASSWORD: eWk4fSTa45PGpJ MYSQL_DATABASE: licenses MYSQL_USER: babel MYSQL_PASSWORD: babel networks: - babellic # Babel Licensing licensing: depends_on: - db container_name: babel-licensing restart: always build: dockerfile: Dockerfile context: . image: babel/licensing:latest ports: - '5005:5005' environment: DOTNET_CLI_HOME: /tmp # Environment ASPNETCORE_ENVIRONMENT: Production # Service Address KESTREL__ENDPOINTS__GRPC__URL: http://*:5005 # Available database providers: SQLServer, MySQL, SQLite BABEL_SERVICE_DATABASE__PROVIDER: MySQL # Connection strings environment variables # SQL Server: BABEL_SERVICE_CONNECTIONSTRINGS__SQLSERVER # MySQL: BABEL_SERVICE_CONNECTIONSTRINGS__MYSQL # SQLite: BABEL_SERVICE_CONNECTIONSTRINGS__SQLITE BABEL_SERVICE_CONNECTIONSTRINGS__MYSQL: Server=db;User=babel;Password=babel;Database=licenses # Authentication token variables BABEL_SERVICE_APPLICATION__SIGNINGKEY: q9F0nLFRuphIHUdrlphe BABEL_SERVICE_APPLICATION__TOKENEXPIRATION: 00:30:00 # Licensing variables BABEL_SERVICE_LICENSING__HEARTBEATINTERVAL: 00:05:00 # Reporting variables BABEL_SERVICE_REPORTING__ENCRYPTIONKEY: p5UwIWaqaChLxe3eJA9o networks: - babellic networks: babellic: volumes: dbdata: licensing:

Die Datei docker-compose.yml definiert eine Anwendung mit zwei Diensten: licensing und db. Das Image des Lizenzdienstes wird mit dem angegebenen Dockerfile erstellt.

Wenn Sie die Anwendung mit Docker Compose bereitstellen, wird der Containerport 5005 dem Hostport 5005 zugeordnet, wie in der Datei angegeben. Stellen Sie sicher, dass der Port 5005 auf dem Hostrechner nicht von einem anderen Container verwendet wird. Andernfalls tragen Sie einen freien Port ein.

Ersetzen Sie die MySQL-Passwörter für root und für den Benutzer unter dem Dienst db und in der Verbindungszeichenfolge des Babel-Dienstes durch starke, sichere Passwörter (Sie müssen sie sich nicht merken). Mit dem Benutzerpasswort wird die Verbindung zur MySQL-Datenbank hergestellt.

Die Datei docker-compose.yml legt fest, wie die Docker-Images zur Laufzeit zusammenarbeiten. Sie gibt die nötigen Konfigurationen, die Umgebungsvariablen und die Netzwerkeinrichtung der Dienste an. Mit Docker Compose und dieser Datei stellen Sie den Babel Licensing Service zusammen mit der zugehörigen Datenbank bereit und verwalten beide.

Den Dienst starten

Nachdem Sie die Datei docker-compose.yml wie im vorherigen Abschnitt beschrieben angelegt haben, führen Sie den folgenden Befehl aus:

docker-compose up -d

Dieser Befehl startet den Babel Licensing Service und die zugehörige Datenbank im Hintergrund (Detached-Modus). Warten Sie, bis die Container gestartet sind: Docker Compose lädt die benötigten Images herunter, sofern sie noch nicht vorhanden sind, und erstellt die Container nach den Konfigurationen in der Datei docker-compose.yml. Es kann einen Moment dauern, bis die Container vollständig laufen.

Anschließend prüfen Sie mit dem Befehl docker ps, ob die Container laufen. Er zeigt die Liste der laufenden Container mit ihren Details an, darunter den Babel Licensing Service und den zugehörigen Datenbankcontainer.

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d2d3fc62f0a babel/licensing:latest "dotnet Babel.Licens…" 25 seconds ago Up 23 seconds 0.0.0.0:5005->5005/tcp babel-licensing 0e4245f683cf mysql:latest "docker-entrypoint.s…" 25 seconds ago Up 24 seconds 33060/tcp, 0.0.0.0:6610->3306/tcp babel-licesing-db-1

Die Lizenzdatei bestimmt die Edition. Mit einer Data-Center-Lizenz wird die Webanwendung unter der Adresse des Dienstes bereitgestellt. Mit einer Server-Lizenz zeigt diese Adresse eine Upgrade-Seite mit einem Vergleich der Editionen. Der Dienst, seine API und Babel Desktop funktionieren weiterhin. Für ein Upgrade ersetzen Sie babel.licenses und starten den Container neu. Eine Neuinstallation ist nicht nötig.

Den Dienst beenden

Mit den folgenden Befehlen beenden und entfernen Sie die Container und löschen die zugehörigen Volumes:

  1. Container beenden und entfernen: Um die mit Docker Compose erstellten Container zu beenden und zu entfernen, führen Sie den folgenden Befehl aus:
$ docker compose down

Der Befehl down hält die in der Datei docker-compose.yml definierten Container an und entfernt sie. Er beendet die laufenden Container und entfernt die zugehörigen Ressourcen wie Netzwerke und Volumes, die Images bleiben dabei erhalten.

  1. Beenden und Volumes löschen: Wenn Sie auch die zu den Containern gehörenden Volumes löschen möchten, verwenden Sie den Befehl down mit dem Flag -v. Führen Sie den folgenden Befehl aus:
$ docker compose down -v

Mit dem Flag -v beendet und entfernt Docker Compose nicht nur die Container, sondern löscht auch die Volumes, die während der Lebensdauer der Container angelegt wurden. So werden alle Ressourcen der Container sauber entfernt, einschließlich der Datendateien der Datenbank.

Führen Sie diese Befehle in dem Verzeichnis aus, in dem die Datei docker-compose.yml liegt. Stellen Sie außerdem sicher, dass Docker Compose installiert und in Ihrer Befehlszeilenumgebung verfügbar ist.

Mit docker compose down oder docker compose down -v beenden und entfernen Sie die Container, löschen die zugehörigen Volumes und räumen die Ressourcen auf, die der Babel Licensing Service belegt hat.

Den Babel Licensing Service konfigurieren

In der Datei docker-compose.yml konfigurieren Sie die Umgebung des Dienstcontainers babel-licensing über mehrere Umgebungsvariablen. Diese Variablen überschreiben die Standardeinstellungen des Babel Licensing Service, die in der Datei appsettings.json gespeichert sind. Die verfügbaren Konfigurationsvariablen im Einzelnen:

  1. DOTNET_CLI_HOME: Gibt den Ort des temporären Verzeichnisses der .NET-CLI (Command Line Interface) an. Hier ist es auf /tmp gesetzt.
  2. ASPNETCORE_ENVIRONMENT: Legt die Umgebung fest, in der der Babel Licensing Service läuft. Der Wert Production bedeutet, dass der Dienst in einer Produktionsumgebung läuft.
  3. KESTREL__ENDPOINTS__GRPC__URL: Definiert die URL des gRPC-Endpunkts des Babel Licensing Service. Hier ist sie auf http://*:5005 gesetzt, das heißt, der Dienst lauscht auf allen verfügbaren Netzwerkschnittstellen auf Port 5005.
  4. BABEL_SERVICE_DATABASE__PROVIDER: Gibt den Datenbankanbieter an, den der Babel Licensing Service verwendet. Der Wert MySQL bedeutet, dass MySQL als Datenbankanbieter verwendet wird.
  5. BABEL_SERVICE_CONNECTIONSTRINGS__MYSQL: Legt die Verbindungszeichenfolge für die MySQL-Datenbank fest. Sie gibt den Server, den Benutzer, das Passwort und den Datenbanknamen an, die der Babel Licensing Service verwendet. Der Anbieter MySQL funktioniert auch mit dem .NET-10-Image (mcr.microsoft.com/dotnet/aspnet:10.0 mit dem Paket babel_service_net100_x.y.z.w.zip). Dort verwendet der Dienst den Pomelo-Fork Microting.EntityFrameworkCore.MySql, mit denselben Umgebungsvariablen.
  6. BABEL_SERVICE_APPLICATION__SIGNINGKEY: Definiert den Signaturschlüssel, mit dem der Babel Licensing Service Authentifizierungstoken erzeugt und validiert. Seit 11.7.0 enthält die mitgelieferte appsettings.json keinen fest codierten Wert mehr: Ist SigningKey beim Start leer, erzeugt der Dienst einen zufälligen Schlüssel für den aktuellen Prozess (und protokolliert eine Warnung). Setzen Sie diese Variable in jeder Bereitstellung außerhalb der Entwicklung, und besonders beim Betrieb mehrerer Replikate hinter einem Load Balancer, immer auf ein ausdrücklich festgelegtes, dauerhaftes Geheimnis. So überstehen ausgestellte Token einen Neustart und werden von allen Instanzen akzeptiert.
  7. BABEL_SERVICE_APPLICATION__TOKENEXPIRATION: Legt die Ablaufzeit der Authentifizierungstoken fest, die der Babel Licensing Service ausstellt.

Erster Administrator (seit 11.7.0): Der Dienst wird nicht mehr mit den Standard-Anmeldedaten admin / admin ausgeliefert. Um den ersten Administrator beim ersten Start anzulegen, setzen Sie BABEL_SERVICE_APPLICATION__ADMINUSERNAME und BABEL_SERVICE_APPLICATION__ADMINPASSWORD (und optional BABEL_SERVICE_APPLICATION__ADMINEMAIL). Der Container startet auch ohne diese Werte, es wird dann aber kein Administrator angelegt. Die Webanwendung (Data Center) kann sich deshalb nicht mit diesem Konto anmelden, und Babel Desktop hat keinen Administrator-API-Schlüssel für die Verbindung, bis beide Pflichtwerte gesetzt sind und der Container neu gestartet wurde. Die Werte werden nur beim ersten Start ausgewertet. Ändern Sie das Passwort danach in der Webanwendung und entfernen Sie ADMINPASSWORD aus Ihrer Umgebung.

  1. BABEL_SERVICE_LICENSING__HEARTBEATINTERVAL: Gibt das maximale Intervall an, in dem die Clients Lebenszeichen an den Babel Licensing Service senden müssen. Das Format ist hh:mm:ss und bezeichnet den zeitlichen Abstand zwischen zwei Lebenszeichen.
  2. BABEL_SERVICE_REPORTING__ENCRYPTIONKEY: Definiert den Schlüssel, mit dem die Daten der Reporting-Funktion des Babel Licensing Service verschlüsselt werden.

Mit diesen Umgebungsvariablen passen Sie den Babel Licensing Service an Ihre Anforderungen an. Wenn Sie die Variablen in der Datei docker-compose.yml setzen, ändern Sie das Verhalten des Dienstes, ohne die ursprüngliche Datei appsettings.json zu bearbeiten. Das hält die Konfiguration flexibel und einfach.

Docker-Image für MSSQL Server

Um Babel Licensing in Docker mit MSSQL zu konfigurieren, verwendet die Einrichtung das neueste Azure-SQL-Edge-Image, das mit Linux Ubuntu kompatibel ist. Die folgende YAML-Konfiguration enthält die wichtigsten Umgebungsvariablen für den Datenbankzugriff, die Authentifizierungstoken und die Lizenzierungsparameter. So lässt sich Babel Licensing in einer Docker-Umgebung einfach mit einer MSSQL-Datenbank bereitstellen und integrieren.

version: '3.7' services: # Database ms-sql-server: image: mcr.microsoft.com/azure-sql-edge:latest volumes: - events_mssql:/var/opt/mssql restart: always ports: - '1433:1433' environment: MSSQL_SA_PASSWORD: eWk4fSTa45PGpJ ACCEPT_EULA: Y DATABASE: licenses networks: - babellic # Babel Licensing licensing: depends_on: - ms-sql-server container_name: babel-licensing-mssql restart: always build: dockerfile: Dockerfile context: . image: babel/licensing:latest ports: - '5005:5005' volumes: - type: bind source: ./babel target: /var/www/babel-lic environment: DOTNET_CLI_HOME: /tmp # Environment ASPNETCORE_ENVIRONMENT: Production # Service Address KESTREL__ENDPOINTS__GRPC__URL: http://*:5005 # Available database providers: SQLServer, MySQL, SQLite BABEL_SERVICE_DATABASE__PROVIDER: SQLServer # Connection strings environment variables # SQL Server: BABEL_SERVICE_CONNECTIONSTRINGS__SQLSERVER # MySQL: BABEL_SERVICE_CONNECTIONSTRINGS__MYSQL # SQLite: BABEL_SERVICE_CONNECTIONSTRINGS__SQLITE BABEL_SERVICE_CONNECTIONSTRINGS__SQLSERVER: data source=ms-sql-server;user id=sa;password=eWk4fSTa45PGpJ;initial catalog=licenses;trusted_connection=false;encrypt=false # Authentication token variables BABEL_SERVICE_APPLICATION__LOGTODATABASE: true BABEL_SERVICE_APPLICATION__SIGNINGKEY: q9F0nLFRuphIHUdrlphe BABEL_SERVICE_APPLICATION__TOKENEXPIRATION: 00:30:00 # Licensing variables BABEL_SERVICE_LICENSING__HEARTBEATINTERVAL: 00:05:00 # Reporting variables BABEL_SERVICE_REPORTING__ENCRYPTIONKEY: p5UwIWaqaChLxe3eJA9o networks: - babellic networks: babellic: volumes: events_mssql: licensing:

Mit Docker richten Sie schnell eine Instanz des Babel Licensing Service ein, ohne alle benötigten Abhängigkeiten von Hand auf Ihrem lokalen Rechner oder Server zu installieren und zu konfigurieren. So vermeiden Sie mögliche Konflikte mit vorhandenen Softwareversionen oder Abhängigkeiten, vereinfachen die Einrichtung und sparen Zeit.

Läuft der Dienst auf einem Host im FIPS-Modus? Wenn der Container auf einem Host mit eingeschaltetem FIPS-Modus läuft und das Basisimage keinen zertifizierten OpenSSL-FIPS-Anbieter enthält, kann der Start des Dienstes mit OpenSslCryptographicException: error:03000086 fehlschlagen. Ursache und Lösung beschreibt die Seite FIPS-Konformität (in der Regel OPENSSL_FORCE_FIPS_MODE=0 oder ein FIPS-fähiges Basisimage).

Last updated on