Esta sección proporciona instrucciones para ejecutar ABBYY FineReader Engine 12 en un contenedor Docker. En este escenario se utilizan dos contenedores:
un contenedor con ABBYY FineReader Engine
un contenedor con el Servicio de licencias
La implementación de este escenario aumenta la tolerancia a fallos y garantiza el funcionamiento continuo de todos los contenedores. Si uno de los contenedores falla, puede reiniciarlo sin interrumpir el otro.En este escenario se utiliza una Licencia en línea, que se conecta al servidor de licencias de *.abbyy.com.
ABBYY Licensing Service solo puede funcionar con una Licencia en línea al mismo tiempo.
Necesita:
un archivo de token de licencia
la contraseña del archivo de token de licencia
Para usar una Licencia en línea en cualquier lugar donde esté instalado ABBYY Licensing Service, deben cumplirse las siguientes condiciones:
Conexión activa a Internet
Conexiones permitidas a *.abbyy.com en el puerto 443 (HTTPS)
GoDaddy Trusted Root Certification Authority incluida en el paquete ca-certificates (consulte los detalles en el sitio web de GoDaddy)
Para ejecutar ABBYY FineReader Engine 12 en un contenedor Docker:
Dockerfile_ls — un Dockerfile para el contenedor con el Servicio de licencias (consulte su contenido a continuación)
Dockerfile_ls está diseñado para compilar un contenedor que funcionará con un solo contenedor compilado a partir de Dockerfile_worker . No configure varias réplicas del contenedor con ABBYY FineReader Engine para que funcionen con un único Servicio de licencias.
Nota: Este contenedor ejecuta el Servicio de licencias con la clave /standalone. Con esta clave, el Servicio de licencias funciona como un proceso en primer plano, que es la práctica recomendada para trabajar con contenedores Docker.
Dockerfile_worker — un Dockerfile para el contenedor con ABBYY FineReader Engine (consulte su contenido a continuación)
wrapper.sh — un script de línea de comandos para ejecutar el ejemplo y mostrar sus resultados en la consola (consulte su contenido a continuación)
docker-compose.yml — un archivo de configuración de Docker Compose (consulte su contenido a continuación)
Tenga en cuenta que, para el contenedor con ABBYY FineReader Engine, establecemos manualmente el tamaño de /dev/shm en docker-compose.yml . Recomendamos configurarlo en al menos 1 GB.
archivo de distribución de ABBYY FineReader Engine 12 (FREngine-Linux-%BUILD_ID%.sh)
archivo de token de licencia
Especifique los parámetros de su licencia en las siguientes líneas de docker-compose.yml:
# Etapa 1.# De esta parte obtenemos el Servicio de LicenciasFROM ubuntu:bionic as builder# Instalar los paquetes necesariosRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ bash \ gzip \ tar \ coreutils \ gettext-baseCOPY FRE*.sh /tmp/FRE12.sh# Instalar ABBYY FineReader EngineRUN chmod +x /tmp/FRE12.sh && /tmp/FRE12.sh -- \ --install-dir "/opt/ABBYY/FREngine12" \ --skip-local-license-activation# Etapa 2. Tomar una imagen limpia# Prepararla para usar el Servicio de LicenciasFROM ubuntu:bionic# Instalar los paquetes necesariosRUN DEBIAN_FRONTEND=noninteractive \ apt update \ && apt install --no-install-recommends --yes \ ca-certificates \ bash \ libc6 \ libgcc-8-dev \ libstdc++-8-dev# Copiar el Servicio de Licencias de la etapa 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/# Crear una carpeta para el funcionamiento del Servicio de LicenciasRUN 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
# Etapa 1. # De esta etapa tomamos un directorio con ABBYY FineReader Engine instalado y el ejemplo compilado# Use el contenedor oficial de GCC para obtener todas las herramientas de desarrollo. # Usamos la versión 8 de GCC solo como ejemplo, porque es la versión predeterminada de GCC en ubuntu bionic# puede usar cualquier versión a partir de la 4.8FROM gcc:8 as builderARG license_tokenARG license_passwordARG service_address# Copie el archivo del token de licencia y úselo para generar el archivo SamplesConfig.h correcto # durante el proceso de instalaciónCOPY ${license_token} /tmp/${license_token}COPY FRE*.sh /tmp/FRE12.sh# Instale ABBYY FineReader Engine 12 y compile el ejemploRUN 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# Para copiar carpetas completas en la siguiente etapa, elimine todos los archivos innecesarios del# kit de distribución de ABBYY FineReader Engine instaladoRUN rm /opt/ABBYY/FREngine12/Bin/libProtection.Developer.so# Etapa 2. Tome una imagen limpia # Prepárela para usar ABBYY FineReader Engine# En esta etapa usamos una imagen mínima de ubuntu sin herramientas de desarrolloFROM ubuntu:bionic# Instale los paquetes necesarios 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# Copie ABBYY FineReader Engine desde la etapa 1COPY --from=builder /opt/ABBYY/FREngine12/Bin /opt/ABBYY/FREngine12/BinCOPY --from=builder /opt/ABBYY/FREngine12/Data /opt/ABBYY/FREngine12/Data# Cree una carpeta para el funcionamiento del servicio de licencias y el almacenamiento en caché# Copie el archivo del token de licencia en esta carpetaCOPY --from=builder /var/lib/ABBYY/SDK/12/Licenses/*.ABBYY.ActivationToken /var/lib/ABBYY/SDK/12/Licenses/# Copie el ejemplo compilado y la imagen de demostraciónCOPY --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: un script para iniciar el ejemplo y mostrar el resultado en la consolaCOPY ./wrapper.sh /wrapper.shRUN chmod +x /wrapper.shENTRYPOINT ["/wrapper.sh"]
wrapper.sh
#!/bin/bash# Iniciar el ejemplo/app/CommandLineInterface $1status=$?if [ $status -ne 0 ]; then echo "Failed to launch app: $status" exit $statusficat ${1##*-of}echo "Done"