Exécution de FRE 12 dans un conteneur Docker - Linux
Cette section explique comment exécuter ABBYY FineReader Engine 12 dans un conteneur Docker. Ce scénario utilise deux conteneurs :
un conteneur avec ABBYY FineReader Engine
un conteneur avec le service de licence
La mise en œuvre de ce scénario améliore la tolérance aux pannes et garantit le fonctionnement continu de tous les conteneurs. Si l’un des conteneurs tombe en panne, vous pouvez le redémarrer sans interrompre l’autre.Une licence en ligne, qui se connecte au serveur de licences *.abbyy.com, est utilisée dans ce scénario.
ABBYY Licensing Service ne peut fonctionner qu’avec une seule licence en ligne à la fois.
Vous avez besoin de :
un fichier de jeton de licence en ligne
le mot de passe du fichier de jeton de licence
Pour utiliser une licence en ligne partout où ABBYY Licensing Service est installé, les conditions suivantes doivent être remplies :
Connexion Internet active
Connexions autorisées à *.abbyy.com sur le port 443 (HTTPS)
Autorité de certification racine de confiance GoDaddy incluse dans le package ca-certificates (voir les détails sur le site web de GoDaddy)
Pour exécuter ABBYY FineReader Engine 12 dans un conteneur Docker :
Dockerfile_ls — un Dockerfile pour le conteneur du service de licence (voir son contenu ci-dessous)
Dockerfile_ls est conçu pour créer un conteneur qui fonctionnera avec un seul conteneur créé à partir de Dockerfile_worker . Ne configurez pas plusieurs réplicas du conteneur avec ABBYY FineReader Engine pour qu’ils fonctionnent avec un seul service de licence.
Remarque : ce conteneur exécute le service de licence avec la clé /standalone. Avec cette clé, le service de licence s’exécute au premier plan, ce qui constitue la bonne pratique pour une utilisation dans des conteneurs Docker.
Dockerfile_worker — un Dockerfile pour le conteneur avec ABBYY FineReader Engine (voir son contenu ci-dessous)
wrapper.sh — un script en ligne de commande permettant d’exécuter l’exemple et d’afficher ses résultats dans la console (voir son contenu ci-dessous)
docker-compose.yml — un fichier de configuration Docker Compose (voir son contenu ci-dessous)
Notez que, pour le conteneur avec ABBYY FineReader Engine, nous définissons manuellement la taille de /dev/shm dans docker-compose.yml . Nous vous recommandons de la définir sur au moins 1 GB.
fichier de distribution ABBYY FineReader Engine 12 (FREngine-Linux-%BUILD_ID%.sh)
fichier de jeton de licence en ligne
Spécifiez les paramètres de votre licence dans les lignes suivantes de docker-compose.yml :
Pour créer et exécuter les conteneurs, utilisez la commande suivante :
docker-compose up
Les résultats de l’exemple seront affichés dans la console.
Vous pouvez personnaliser les arguments par défaut de l’exemple de code CommandLineInterface (CLI) en modifiant la ligne suivante dans docker-compose.yml :
# Étape 1.# À partir de cette étape, nous récupérons le service de licenceFROM ubuntu:bionic as builder# Installer les paquets requisRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ bash \ gzip \ tar \ coreutils \ gettext-baseCOPY FRE*.sh /tmp/FRE12.sh# Installer ABBYY FineReader EngineRUN chmod +x /tmp/FRE12.sh && /tmp/FRE12.sh -- \ --install-dir "/opt/ABBYY/FREngine12" \ --skip-local-license-activation# Étape 2. Prendre une image propre# La préparer à utiliser le service de licenceFROM ubuntu:bionic# Installer les paquets requisRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ ca-certificates \ bash \ libc6 \ libgcc-8-dev \ libstdc++-8-dev# Copier le service de licence depuis l'étape 1COPY --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/# Créer un dossier pour le fonctionnement du service de licenceRUN 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
# Étape 1. # À partir de cette étape, nous récupérons un répertoire dans lequel ABBYY FineReader Engine est installé, ainsi que l’exemple compilé# Utilisez le conteneur GCC officiel pour disposer de tous les outils de développement. # Nous utilisons la version 8 de GCC uniquement à titre d’exemple, car il s’agit de la version par défaut dans Ubuntu Bionic# vous pouvez utiliser n’importe quelle version à partir de la 4.8FROM gcc:8 as builderARG license_tokenARG license_passwordARG service_address# Copiez le fichier de jeton de licence et utilisez-le pour générer le fichier SamplesConfig.h approprié # pendant le processus d’installationCOPY ${license_token} /tmp/${license_token}COPY FRE*.sh /tmp/FRE12.sh# Installez ABBYY FineReader Engine 12 et compilez l’exempleRUN 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# Pour copier des dossiers entiers à l’étape suivante, supprimez tous les fichiers inutiles du# kit de distribution de ABBYY FineReader Engine installéRUN rm /opt/ABBYY/FREngine12/Bin/libProtection.Developer.so# Étape 2. Utiliser une image propre # La préparer pour utiliser ABBYY FineReader Engine# À cette étape, nous utilisons une image Ubuntu minimaliste sans outils de développementFROM ubuntu:bionic# Installer les paquets requis 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# Copier ABBYY FineReader Engine depuis l’étape 1COPY --from=builder /opt/ABBYY/FREngine12/Bin /opt/ABBYY/FREngine12/BinCOPY --from=builder /opt/ABBYY/FREngine12/Data /opt/ABBYY/FREngine12/Data# Créer un dossier pour le fonctionnement du service de licence et le stockage du cache# Copier le fichier de jeton de licence dans ce dossierCOPY --from=builder /var/lib/ABBYY/SDK/12/Licenses/*.ABBYY.ActivationToken /var/lib/ABBYY/SDK/12/Licenses/# Copier l’exemple compilé et l’image de démonstrationCOPY --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 - script permettant de lancer l’exemple et d’afficher le résultat dans la consoleCOPY ./wrapper.sh /wrapper.shRUN chmod +x /wrapper.shENTRYPOINT ["/wrapper.sh"]
wrapper.sh
#!/bin/bash# Lancer l’exemple/app/CommandLineInterface $1status=$?if [ $status -ne 0 ]; then echo "Échec du lancement de l’application : $status" exit $statusficat ${1##*-of}echo "Terminé"