Ausführen von FRE 12 in einem Docker-Container – Linux
Dieser Abschnitt enthält Anweisungen zum Ausführen von ABBYY FineReader Engine 12 in einem Docker-Container. In diesem Szenario werden zwei Container verwendet:
ein Container mit ABBYY FineReader Engine
ein Container mit dem Licensing Service
Die Umsetzung dieses Szenarios erhöht die Ausfallsicherheit und gewährleistet den kontinuierlichen Betrieb aller Container. Wenn einer der Container ausfällt, können Sie ihn neu starten, ohne die anderen zu unterbrechen.Für dieses Szenario wird eine Online License verwendet, die eine Verbindung mit dem Lizenzserver *.abbyy.com herstellt.
ABBYY Licensing Service kann jeweils nur mit einer Online License gleichzeitig arbeiten.
Sie benötigen:
eine Token-Datei für die Online License
das Kennwort für die Lizenz-Token-Datei
Für die Verwendung einer Online License müssen überall dort, wo ABBYY Licensing Service installiert ist, die folgenden Bedingungen erfüllt sein:
Aktive Internetverbindung
Zulässige Verbindungen zu *.abbyy.com über Port 443 (HTTPS)
GoDaddy Trusted Root Certification Authority, enthalten im Paket ca-certificates (Details finden Sie auf der GoDaddy-Website)
So führen Sie ABBYY FineReader Engine 12 in einem Docker-Container aus:
Laden Sie Docker und Docker Compose herunter und installieren Sie sie auf Ihrem Computer.
Erstellen Sie ein leeres Verzeichnis und legen Sie dort Folgendes ab:
Dockerfile_ls — ein Dockerfile für einen Container mit dem Licensing Service (siehe die Auflistung unten)
Dockerfile_ls ist zum Erstellen eines Containers vorgesehen, der nur mit einem Container arbeitet, der aus Dockerfile_worker erstellt wurde. Konfigurieren Sie nicht mehrere Replikate eines Containers mit ABBYY FineReader Engine für die Verwendung mit einem einzelnen Licensing Service.
Hinweis: Dieser Container führt den Licensing Service mit dem Schlüssel /standalone aus. Mit diesem Schlüssel arbeitet der Licensing Service als Vordergrundprozess, was die empfohlene Vorgehensweise für Docker-Container ist.
Dockerfile_worker — ein Dockerfile für einen Container mit ABBYY FineReader Engine (siehe die Auflistung unten)
wrapper.sh — ein Befehlszeilenskript zum Ausführen des Beispiels und zum Anzeigen der Ergebnisse in der Konsole (siehe die Auflistung unten)
docker-compose.yml — eine Konfiguration für Docker Compose (siehe die Auflistung unten)
Beachten Sie, dass wir für den Container mit ABBYY FineReader Engine die Größe von /dev/shm in docker-compose.yml manuell festlegen. Wir empfehlen, sie auf mindestens 1 GB zu setzen.
Verwenden Sie zum Erstellen und Ausführen der Container den folgenden Befehl:
docker-compose up
Die Ergebnisse des Beispiels werden in der Konsole angezeigt.
Sie können die Standardargumente des Codebeispiels für CommandLineInterface (CLI) anpassen, indem Sie die folgende Zeile in der Datei docker-compose.yml bearbeiten:
Weitere Informationen zu den CLI-Argumenten finden Sie in der Code Samples Library.
Dockerfile_ls
Dockerfile_ls
# Stufe 1.# Aus diesem Teil übernehmen wir den Licensing ServiceFROM ubuntu:bionic as builder# Die erforderlichen Pakete installierenRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ bash \ gzip \ tar \ coreutils \ gettext-baseCOPY FRE*.sh /tmp/FRE12.sh# ABBYY FineReader Engine installierenRUN chmod +x /tmp/FRE12.sh && /tmp/FRE12.sh -- \ --install-dir "/opt/ABBYY/FREngine12" \ --skip-local-license-activation# Stufe 2. Ein sauberes Image verwenden# Für die Verwendung des Licensing Service vorbereitenFROM ubuntu:bionic# Die erforderlichen Pakete installierenRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ ca-certificates \ bash \ libc6 \ libgcc-8-dev \ libstdc++-8-dev# Den Licensing Service aus Stufe 1 kopierenCOPY --from=builder /usr/local/bin/ABBYY/SDK/12/Licensing /usr/local/bin/ABBYY/SDK/12/Licensing/COPY --from=builder /usr/local/lib/ABBYY/SDK/12/Licensing /usr/local/lib/ABBYY/SDK/12/Licensing/# Einen Ordner für den Betrieb des Licensing Service erstellenRUN mkdir /var/lib/ABBYY/SDK/12/Licenses -p && chmod 755 /var/lib/ABBYY/SDK/12/LicensesENV LD_LIBRARY_PATH=/usr/local/lib/ABBYY/SDK/12/LicensingEXPOSE 3023ENTRYPOINT ["/usr/local/bin/ABBYY/SDK/12/Licensing/LicensingService", "/standalone"]
Dockerfile_worker
Dockerfile_worker
# Stufe 1. # Aus diesem Teil übernehmen wir ein Verzeichnis mit installierter ABBYY FineReader Engine und dem kompilierten Beispiel# Verwenden Sie den offiziellen GCC-Container, um alle Entwicklungstools bereitzustellen. # Wir verwenden GCC 8 hier nur als Beispiel, da dies der Standard-GCC in Ubuntu Bionic ist# Sie können jede Version ab 4.8 verwendenFROM gcc:8 as builderARG license_tokenARG license_passwordARG service_address# Kopieren Sie die Lizenztoken-Datei und verwenden Sie sie, um die korrekte SamplesConfig.h # während des Installationsvorgangs zu generierenCOPY ${license_token} /tmp/${license_token}COPY FRE*.sh /tmp/FRE12.sh# Installieren Sie ABBYY FineReader Engine 12 und erstellen Sie das BeispielRUN chmod +x /tmp/FRE12.sh && /tmp/FRE12.sh -- \ --install-dir "/opt/ABBYY/FREngine12" \ --license-path "/tmp/${license_token}" \ --license-password "${license_password}" \ --service-address "${service_address}" \ --developer-installWORKDIR /opt/ABBYY/FREngine12/Samples/CommandLineInterfaceRUN make# Damit Sie im nächsten Schritt ganze Ordner kopieren können, entfernen Sie alle unnötigen Dateien aus dem# Distributionspaket der installierten ABBYY FineReader EngineRUN rm /opt/ABBYY/FREngine12/Bin/libProtection.Developer.so# Stufe 2. Verwenden Sie ein sauberes Image # Bereiten Sie es für die Verwendung mit ABBYY FineReader Engine vor# In dieser Stufe verwenden wir ein minimalistisches Ubuntu-Image ohne EntwicklungstoolsFROM ubuntu:bionic# Installieren Sie die erforderlichen Pakete RUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ ca-certificates \ bash \ libc6 \ libglib2.0-0 \ libgcc-8-dev \ libstdc++-8-dev \ zlib1g \ libx11-6 \ libfreetype6 \ libxext-dev \ libice-dev \ libsm-dev \ locales \ && locale-gen en_US.UTF-8# Kopieren Sie ABBYY FineReader Engine aus Stufe 1COPY --from=builder /opt/ABBYY/FREngine12/Bin /opt/ABBYY/FREngine12/BinCOPY --from=builder /opt/ABBYY/FREngine12/Data /opt/ABBYY/FREngine12/Data# Erstellen Sie einen Ordner für den Betrieb des Licensing Service und die Cache-Speicherung# Kopieren Sie die Lizenztoken-Datei in diesen OrdnerCOPY --from=builder /var/lib/ABBYY/SDK/12/Licenses/*.ABBYY.ActivationToken /var/lib/ABBYY/SDK/12/Licenses/# Kopieren Sie das kompilierte Beispiel und das Demo-BildCOPY --from=builder /opt/ABBYY/FREngine12/Samples/CommandLineInterface/CommandLineInterface /app/COPY --from=builder /opt/ABBYY/FREngine12/Samples/SampleImages/Demo.tif /app/ENV LD_LIBRARY_PATH=/opt/ABBYY/FREngine12/Bin# wrapper.sh – ein Skript zum Starten des Beispiels und zum Anzeigen des Ergebnisses in der KonsoleCOPY ./wrapper.sh /wrapper.shRUN chmod +x /wrapper.shENTRYPOINT ["/wrapper.sh"]
wrapper.sh
#!/bin/bash# Beispiel starten/app/CommandLineInterface $1status=$?if [ $status -ne 0 ]; then echo "Failed to launch app: $status" exit $statusficat ${1##*-of}echo "Done"