메인 콘텐츠로 건너뛰기
이 섹션에서는 Docker 컨테이너에서 ABBYY FineReader Engine 12를 실행하는 방법을 설명합니다. 이 시나리오에서는 두 개의 컨테이너를 사용합니다.
  1. ABBYY FineReader Engine이 포함된 컨테이너 1개
  2. Licensing Service가 포함된 컨테이너 1개
이 시나리오를 구현하면 내결함성이 향상되고 모든 컨테이너를 중단 없이 계속 운영할 수 있습니다. 컨테이너 하나에 장애가 발생하더라도 다른 컨테이너에 영향을 주지 않고 다시 시작할 수 있습니다. 이 시나리오에서는 *.abbyy.com 라이선스 서버에 연결되는 Online License를 사용합니다.
ABBYY Licensing Service는 동시에 하나의 Online License만 사용할 수 있습니다.
필요한 항목:
  • Online License 토큰 파일
  • 라이선스 토큰 파일의 비밀번호
ABBYY Licensing Service가 설치된 곳에서 Online License를 사용하려면 다음 조건을 충족해야 합니다.
  • 활성 인터넷 연결
  • 443 포트(HTTPS)를 통한 *.abbyy.com 연결 허용
  • ca-certificates 패키지에 포함된 GoDaddy Trusted Root Certification Authority(자세한 내용은 GoDaddy 웹사이트 참조)
Docker 컨테이너에서 ABBYY FineReader Engine 12를 실행하려면 다음과 같이 하십시오.
  1. 시스템에 DockerDocker Compose를 다운로드하여 설치합니다.
  2. 빈 디렉터리를 만든 다음, 다음 파일을 해당 디렉터리에 넣습니다.
  • Dockerfile_ls — Licensing Service가 포함된 컨테이너용 Dockerfile(below의 목록 참조)
Dockerfile_ls는 Dockerfile_worker 에서 빌드한 컨테이너 하나와만 함께 작동하는 컨테이너를 빌드하기 위한 파일입니다. ABBYY FineReader Engine이 포함된 여러 복제 컨테이너가 단일 Licensing Service와 함께 작동하도록 구성하지 마십시오.
참고: 이 컨테이너는 /standalone 키와 함께 Licensing Service를 실행합니다. 이 키를 사용하면 Licensing Service가 포그라운드 프로세스로 실행되며, 이는 Docker 컨테이너에서 사용할 때 권장되는 방식입니다.
  • Dockerfile_worker — ABBYY FineReader Engine이 포함된 컨테이너용 Dockerfile(below의 목록 참조)
  • wrapper.sh — 샘플을 실행하고 결과를 콘솔에 표시하는 명령줄 스크립트(below의 목록 참조)
  • docker-compose.yml — Docker Compose 구성 파일(below의 목록 참조)
ABBYY FineReader Engine이 포함된 컨테이너의 경우 docker-compose.yml 에서 /dev/shm 크기를 수동으로 설정합니다. 최소 1GB로 설정하는 것이 좋습니다.
  • ABBYY FineReader Engine 12 배포 파일(FREngine-Linux-%BUILD_ID%.sh)
  • Online License 토큰 파일
  1. docker-compose.yml의 다음 줄에 라이선스 매개변수를 지정합니다.
args:
- license_token=SWRRXXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
- license_password=your_license_password
  1. 컨테이너를 빌드하고 실행하려면 다음 명령을 사용하세요:
docker-compose up
샘플 실행 결과가 콘솔에 표시됩니다.
다음 docker-compose.yml의 줄을 편집하여 CommandLineInterface (CLI) 코드 샘플의 기본 인수를 사용자 지정할 수 있습니다:
command: ["-if /app/Demo.tif -f TextUnicodeDefaults -of /app/Test.txt"]
CLI 인수에 대한 자세한 내용은 Code Samples Library에서 확인하세요.
Dockerfile_ls
# 1단계.
# 여기서 Licensing Service를 가져옵니다
FROM ubuntu:bionic as builder
 
# 필요한 패키지를 설치합니다
RUN DEBIAN_FRONTEND=noninteractive \
    apt update \
    && apt install --no-install-recommends --yes \
    bash \
    gzip \
    tar \
    coreutils \
    gettext-base
COPY FRE*.sh /tmp/FRE12.sh
 
# ABBYY FineReader Engine을 설치합니다
RUN chmod +x /tmp/FRE12.sh && /tmp/FRE12.sh -- \
    --install-dir "/opt/ABBYY/FREngine12" \
    --skip-local-license-activation
 
# 2단계. 새 이미지를 사용합니다
# Licensing Service를 사용할 수 있도록 준비합니다
FROM ubuntu:bionic
 
# 필요한 패키지를 설치합니다
RUN DEBIAN_FRONTEND=noninteractive \
    apt update \
    && apt install --no-install-recommends --yes \
    ca-certificates \
    bash \
    libc6 \
    libgcc-8-dev \
    libstdc++-8-dev
# 1단계에서 Licensing Service를 복사합니다
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/
 
# Licensing Service가 사용할 폴더를 생성합니다
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
# 1단계. 
# 이 부분에서는 ABBYY FineReader Engine이 설치된 디렉터리와 컴파일된 샘플을 가져옵니다
# 모든 개발 도구를 사용하기 위해 공식 GCC 컨테이너를 사용합니다. 
# 여기서는 ubuntu bionic의 기본 GCC이기 때문에 예시로 GCC 8 버전을 사용합니다
# 4.8 이상이면 어떤 버전이든 사용할 수 있습니다
FROM gcc:8 as builder
 
ARG license_token
ARG license_password
ARG service_address
# 라이선스 토큰 파일을 복사한 다음, 설치 과정에서
# 이를 사용해 올바른 SamplesConfig.h를 생성합니다
COPY ${license_token} /tmp/${license_token}
 
COPY FRE*.sh /tmp/FRE12.sh
 
# ABBYY FineReader Engine 12를 설치하고 샘플을 빌드합니다
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
# 다음 단계에서 전체 폴더를 복사할 수 있도록
# 설치된 ABBYY FineReader Engine의 배포 키트에서 불필요한 파일을 모두 제거합니다
RUN rm /opt/ABBYY/FREngine12/Bin/libProtection.Developer.so
 
# 2단계. 깨끗한 이미지를 사용합니다 
# ABBYY FineReader Engine을 사용할 수 있도록 준비합니다
# 이 단계에서는 개발 도구가 없는 최소한의 ubuntu 이미지를 사용합니다
FROM ubuntu:bionic
 
# 필요한 패키지를 설치합니다 
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
# 1단계에서 ABBYY FineReader Engine을 복사합니다
COPY --from=builder /opt/ABBYY/FREngine12/Bin /opt/ABBYY/FREngine12/Bin
COPY --from=builder /opt/ABBYY/FREngine12/Data /opt/ABBYY/FREngine12/Data
# Licensing Service 작업과 캐시 저장소에 사용할 폴더를 생성합니다
# 이 폴더에 라이선스 토큰 파일을 복사합니다
COPY --from=builder /var/lib/ABBYY/SDK/12/Licenses/*.ABBYY.ActivationToken /var/lib/ABBYY/SDK/12/Licenses/
# 컴파일된 샘플과 데모 이미지를 복사합니다
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 - 샘플을 실행하고 콘솔에 결과를 표시하는 스크립트
COPY ./wrapper.sh /wrapper.sh
RUN chmod +x /wrapper.sh
ENTRYPOINT ["/wrapper.sh"]
#!/bin/bash
 
# 샘플 실행
/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

참고 항목

Linux에서 Licensing Service 설치 라이선싱 활성화