OCT-Best-Practice

Container erstellen und ausführen

Mithilfe von Containern lassen sich Prozesse isoliert von der OCT Umgebung ausführen. Diese Container sind in einer Azure Umgebung hinterlegt.

Üblicherweise werden über OCT Container gestartet, die ein PowerShell- oder Python-Skript ausführen. Die Container verwenden Linux als zugrundeliegendes Betriebssystem.

Sie sollten sich im Vorfeld einen Storage Account mit passenden Skripten eingerichtet haben - dafür nutzen Sie am besten den Azure Storage Explorer.

1. Voraussetzungen

  • Container werden ab OCT Version 5.11 unterstützt

  • Container sind nur verfügbar, wenn die OCT Applikation als WebApp in der gleichen Azure Subscription läuft.

  • Es müssen passende Docker-Images erstellt und in der Azure Container Registrierung hochgeladen werden. Diese Images werden üblicherweise von Saxess bereitgestellt.

  • Ein Azure Storage Account zum Ablegen der Skripte für den Kunden wird benötigt.


2. Bereitstellung von Docker-Images bzw. Container-Images

  • Auf einer virtuellen Maschine werden in einem Repository verschiedene Containertypen als Dockerfiles gespeichert, die von Saxess bereitgestellt werden.

  • Ein Dockerfile ist ein Bauplan zum Erstellen eines Docker-Images. Auf Grundlage dieser Datei wird das Image erzeugt.

  • Saxess verfügt über eine fertige Docker-Umgebung, in welcher Kopien von Images zur Erstellung von Containern gemacht werden können.

  • Diese Images werden bei Saxess in einer Azure Container Registry gespeichert.

  • Die Images werden in Repositorys verwaltet. Unterschiedliche Versionen eines Images werden üblicherweise über Tags wie v1, v2 usw. gekennzeichnet.

  • Saxess stellt verschiedene Images bereit. Diese

    • besitzen einen technischen Namen,

    • werden über eine Container Registry mit einer URL nach dem Schema <…>.azurecr.io bereitgestellt,

    • können je nach Image PowerShell- oder Python-Skripte ausführen,

    • unterscheiden sich je nach Imagetyp hinsichtlich Größe und Startzeit,

    • können je nach Imagetyp Python-Bibliotheken wie Pandas, SQLAlchemy, pyodbc oder requests enthalten oder diese beim Start installieren.

  • Wenn dieses Image über einen Container-Step gestartet wird, wird ein Container erstellt und nach Ausführen des Skripts beendet.


3. Implementierung

  • Es muss ein Skript im Microsoft Azure Storage Explorer angelegt werden.

  • Es müssen bestimmte Konventionen beim Skriptdesign beachtet werden, damit in der Applikation korrekte Informationen in den Prozesslogs angezeigt werden.

  • Dieses Skript muss in einem File Storage in einem beliebigen Volume liegen.

  • In der Dateifreigabe (hier “python”) muss ein Ordner “scripts” angelegt sein. Der Pfad ist nur unter der Menüleiste zu sehen (siehe Screenshot).

  • In dem Ordner “scripts” muss eine Datei z.B. main.py oder main.ps1 liegen - dieser Skriptname kann im Containerstep angepasst werden. Diese Datei wird später als Startbefehl im Container-Step hinterlegt.

  • Einige Container unterstützen die Installation zusätzlicher Python-Bibliotheken mithilfe einer Datei namens “requirements.txt” im Ordner „scripts“. In dieser Datei wird definiert, welche Bibliotheken im Container installiert werden sollen.

image-20250519-073926.png

4. Datenquelle “Azure Storage” anlegen

  • Damit ein Container-Step angelegt werden kann, muss zuvor eine Datenquelle vom Quellsystemtyp “Azure Storage” mit Typ File-Storage angelegt werden.

image-20250218-141339.png

5. Container-Step anlegen

  • Grundlegende Informationen zum Anlegen eines Container-Steps und den dazugehörenden Features in der Applikation finden Sie hier: 3.2.3.17. Container

image-20250606-082642.png
  • Mit dem Container-Step können Sie einen Container basierend auf von uns bereitgestellten Docker-Images erstellen lassen.

  • Dieser Container bindet einen von Ihnen definierten File-Storage als Dateisystem bzw. Volume in den Container ein und führt auf diesem ein von Ihnen angegebenes Skript aus. Nach Beendigung des Skripts wird der Container gelöscht.

  • Damit Sie den Output des Skripts in der Übersicht der Prozesslogs und in den Log-Details der Pipeline sehen können, muss dieses Skript folgende Bedingungen erfüllen:

    • Es müssen korrekte Exit Codes verwendet werden.

    • Es muss Logging verwendet werden.

    • Der Output muss korrekt in UTF-8 codiert sein.

Für diesen Zweck erhalten Sie ein Musterskript “Python Framework”, mit dessen Hilfe Sie schnell starten können.


6. Weitere Informationen

  • Container sind schnell und klein (ab 250 MB).

  • Ein Container stellt eine isolierte Umgebung für die Ausführung von Aufgaben bereit. Durch die Isolation können bestimmte Sicherheitsrisiken bei der Ausführung von PowerShell- oder Python-Skripten reduziert werden.

  • Container werden durch einen Befehl gestartet, führen das zugrundeliegende Skript aus. Nach Abschluss des Skripts wird der Container beendet und anschließend von OCT bzw. der zugrunde liegenden Infrastruktur gelöscht. Beim Beenden des Containers werden keine permanenten Inhalte gespeichert.

  • Container besitzen keine eigene GUI und werden nur per Kommandozeile gesteuert.

  • Daten, die ausschließlich innerhalb des Container-Dateisystems gespeichert werden, gehen beim Beenden des Containers verloren. Daten, die dauerhaft erhalten bleiben sollen, müssen daher beispielsweise in einer externen Datenbank oder im Azure Storage Account gespeichert werden.

Last updated: