이 섹션에서는 Docker 컨테이너에서 ABBYY FineReader Engine 12를 실행하는 방법을 설명합니다. 이 시나리오에서는 두 개의 컨테이너를 사용합니다.
ABBYY FineReader Engine이 포함된 컨테이너 1개
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를 실행하려면 다음과 같이 하십시오.
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로 설정하는 것이 좋습니다.
# 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-baseCOPY 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/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
# 1단계. # 이 부분에서는 ABBYY FineReader Engine이 설치된 디렉터리와 컴파일된 샘플을 가져옵니다# 모든 개발 도구를 사용하기 위해 공식 GCC 컨테이너를 사용합니다. # 여기서는 ubuntu bionic의 기본 GCC이기 때문에 예시로 GCC 8 버전을 사용합니다# 4.8 이상이면 어떤 버전이든 사용할 수 있습니다FROM gcc:8 as builderARG license_tokenARG license_passwordARG 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-installWORKDIR /opt/ABBYY/FREngine12/Samples/CommandLineInterfaceRUN 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/BinCOPY --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.shRUN chmod +x /wrapper.shENTRYPOINT ["/wrapper.sh"]
wrapper.sh
#!/bin/bash# 샘플 실행/app/CommandLineInterface $1status=$?if [ $status -ne 0 ]; then echo "Failed to launch app: $status" exit $statusficat ${1##*-of}echo "Done"