Esta sección proporciona instrucciones para ejecutar ABBYY FineReader Engine 12 dentro de un contenedor Docker. En este escenario se usan 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.Para este escenario se usa una Licencia Online, que se conecta al servidor de licencias de *.abbyy.com.
ABBYY servicio de licencias solo puede funcionar con una Licencia Online al mismo tiempo.
Debe cumplir las siguientes condiciones para usar una Licencia Online allí donde esté instalado ABBYY servicio de licencias:
Conexión activa a Internet
Conexiones permitidas a *.abbyy.com en el puerto 443 (HTTPS)
GoDaddy Trusted Root Certification Authority
El certificado raíz de GoDaddy para la entidad de certificación debe estar instalado en la versión de equipo local del almacén de certificados Trusted Root Certification Authorities. Consulte la información detallada sobre el certificado en el sitio web de GoDaddy.
Para ejecutar ABBYY FineReader Engine 12 en un contenedor Docker:
Habilite las características de Windows Hyper-V y Containers.
Seleccione la opción “Use Windows containers instead of Linux containers” durante la instalación del contenedor.
Cree un directorio vacío y coloque en él:
docker-compose.yml — una configuración de Docker Compose (consulte su contenido a continuación)
TestAppFolder — un directorio con
un archivo de token de Licencia Online
una aplicación de prueba compilada para usar este archivo de token, así como su contraseña y su Customer Project ID
Dockerfile_ls — un Dockerfile para el contenedor con el servicio de licencias (consulte su contenido a continuación)
Dockerfile_ls está pensado para compilar un contenedor que funcionará solo con un 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.
LicensingSettings_ls.xml - un archivo con parámetros de licencia para el servicio de licencias (consulte su contenido a continuación)
DeployLS.ps1 — un script para iniciar el servicio de licencias (consulte su contenido a continuación)
Nota: Este script 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 en contenedores Docker.
Dockerfile_worker — un Dockerfile para un contenedor con ABBYY FineReader Engine y una aplicación de prueba (Consulte su contenido a continuación)
LicensingSettings_worker.xml - un archivo con los parámetros de licencia de la biblioteca ABBYY FineReader Engine (Consulte su contenido a continuación)
SetUpWorkerLicensing.ps1 - un script para reemplazar el nombre del servidor en LicensingSettings_worker.xml por el nombre especificado en docker-compose.yml (Consulte su contenido a continuación)
RunTestApp.ps1 — un script de línea de comandos para ejecutar la aplicación de prueba (Consulte su contenido a continuación)
Descomprima el paquete de distribución de ABBYY FineReader Engine en el directorio que creó anteriormente con el comando:
Para compilar y ejecutar los contenedores, utilice el siguiente comando:
docker-compose up
Los resultados de la ejecución de la aplicación de prueba se mostrarán en la consola.
Si usa Windows Server Core como imagen base del contenedor, configure las fuentes después de desplegar ABBYY FineReader Engine, como se describe en Trabajar con fuentes
FROM mcr.microsoft.com/windows/servercore:ltsc2019 as fre12installation# Copie la biblioteca extraída en la carpeta C:/app/FRE12ARG library_src="./FRE/FineReader Engine"ADD $library_src /app/FRE12ADD ./LicensingSettings_worker.xml /app/FRE12/Bin64/LicensingSettings.xml# Reemplace <service_address> en el archivo LicensingSettings.xml del workerARG service_addressCOPY ./SetUpWorkerLicensing.ps1 /app/SetUpWorkerLicensing.ps1SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]RUN /app/SetUpWorkerLicensing.ps1 -ServerAddress $service_address# Copie y ejecute una aplicación de pruebaCOPY ./TestAppFolder /app/TestAppFolderCOPY ./RunTestApp.ps1 /app/RunTestApp.ps1CMD /app/RunTestApp.ps1
Param ([string]$service_address)# Script para preparar la carpeta de logging de licencias del cliente y establecer ServerAddress en LicensingSettings.xmlecho "Preparando la carpeta de logging:"echo "C:\ProgramData\ABBYY\SDK\12\Licenses"New-Item -Path "C:\ProgramData\ABBYY\SDK\12\Licenses" -ItemType Directoryecho "LicensingSettings.xml encontrado:"cd "C:/app/FRE12/Bin64"type LicensingSettings.xmlecho "Estableciendo la dirección del servicio en: "echo $service_address((Get-Content -path LicensingSettings.xml -Raw) -replace '<server_address>',$Env:service_address) `| Set-Content -Path LicensingSettings.xmlecho "LicensingSettings.xml configurado:"type LicensingSettings.xml
RunTestApp.ps1
# Script para ejecutar una aplicación de prueba desde la carpeta TestAppFolder# Inicie la aplicación de prueba con argumentos (CommandLineInterface.exe se utiliza como aplicación de prueba)cd C:\app\TestAppFolder.\CommandLineInterface.exe -pi -if Demo.tif -f PDF -of Demo.pdf# Para usar el ejemplo de código de CommandLineInterface en un contenedor Docker, debe:# 1) especificar los datos del contenedor Docker en SamplesConfig.h:# - GetLicensePath, GetCustomerProjectId, GetLicensePassword# - L"C:\\app\\FRE12\\Bin64\\FREngine.dll" como GetFreDllPath# 2) recompilar el proyecto para la configuración x64.# 3) copiar CommandLineInterface.exe, el archivo de licencia *.ABBYY.ActivationToken# y la imagen de demostración (Demo.tif) en la carpeta \TestAppFolder.