Saltar al contenido principal
Esta sección proporciona instrucciones para ejecutar ABBYY FineReader Engine 12 en un contenedor Docker. En este escenario se utilizan dos contenedores:
  1. un contenedor con ABBYY FineReader Engine
  2. 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:
  1. Descargue e instale Docker y Docker Compose en su equipo.
  2. Cree un directorio vacío y coloque en él:
  • 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
  1. Especifique los parámetros de su licencia en las siguientes líneas de docker-compose.yml:
args:
- license_token=SWRRXXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
- license_password=your_license_password
  1. Para crear y ejecutar los contenedores, use el siguiente comando:
docker-compose up
Los resultados del ejemplo se mostrarán en la consola.
Puede personalizar los argumentos predeterminados del ejemplo de código CommandLineInterface (CLI) editando la siguiente línea de docker-compose.yml:
command: ["-if /app/Demo.tif -f TextUnicodeDefaults -of /app/Test.txt"]
Consulte los detalles sobre los argumentos de la CLI en la biblioteca de ejemplos de código.
Dockerfile_ls
# Etapa 1.
# De esta parte obtenemos el Servicio de Licencias
FROM ubuntu:bionic as builder
 
# Instalar los paquetes necesarios
RUN DEBIAN_FRONTEND=noninteractive \
    apt update \
    && apt install --no-install-recommends --yes \
    bash \
    gzip \
    tar \
    coreutils \
    gettext-base
COPY FRE*.sh /tmp/FRE12.sh
 
# Instalar ABBYY FineReader Engine
RUN 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 Licencias
FROM ubuntu:bionic
 
# Instalar los paquetes necesarios
RUN 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 1
COPY --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 Licencias
RUN mkdir /var/lib/ABBYY/SDK/12/Licenses -p && chmod 755 /var/lib/ABBYY/SDK/12/Licenses
 
ENV LD_LIBRARY_PATH=/usr/local/lib/ABBYY/SDK/12/Licensing
 
EXPOSE 3023
 
ENTRYPOINT ["/usr/local/bin/ABBYY/SDK/12/Licensing/LicensingService", "/standalone"]
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.8
FROM gcc:8 as builder
 
ARG license_token
ARG license_password
ARG service_address
# Copie el archivo del token de licencia y úselo para generar el archivo SamplesConfig.h correcto 
# durante el proceso de instalación
COPY ${license_token} /tmp/${license_token}
 
COPY FRE*.sh /tmp/FRE12.sh
 
# Instale ABBYY FineReader Engine 12 y compile el ejemplo
RUN 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-install
WORKDIR /opt/ABBYY/FREngine12/Samples/CommandLineInterface
RUN make
# Para copiar carpetas completas en la siguiente etapa, elimine todos los archivos innecesarios del
# kit de distribución de ABBYY FineReader Engine instalado
RUN 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 desarrollo
FROM 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 1
COPY --from=builder /opt/ABBYY/FREngine12/Bin /opt/ABBYY/FREngine12/Bin
COPY --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 carpeta
COPY --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ón
COPY --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 consola
COPY ./wrapper.sh /wrapper.sh
RUN chmod +x /wrapper.sh
ENTRYPOINT ["/wrapper.sh"]
#!/bin/bash
 
# Iniciar el ejemplo
/app/CommandLineInterface $1
status=$?
if [ $status -ne 0 ]; then
  echo "Failed to launch app: $status"
  exit $status
fi
cat ${1##*-of}
echo "Done"
version: '3'
services:
  worker:
    build:
      context: .
      dockerfile: Dockerfile_worker
      args:
        - license_token=SWRRXXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
        - license_password=your_license_password
        - service_address=ls
    depends_on:
      - ls
    shm_size: 1g
    command: ["-if /app/Demo.tif -f TextUnicodeDefaults -of /app/Test.txt"]
    restart: on-failure
  ls:
    build:
      context: .
      dockerfile: Dockerfile_ls
    restart: on-failure

Consulte también

Instalación del servicio de licencias en Linux Licencias Activación