メインコンテンツへスキップ
このセクションでは、ABBYY FineReader Engine 12 を Docker コンテナー内で実行する手順について説明します。このシナリオでは、次の 2 つのコンテナーを使用します。
  1. ABBYY FineReader Engine を含むコンテナー
  2. Licensing Service を含むコンテナー
このシナリオを実装すると、耐障害性が向上し、すべてのコンテナーの継続的な稼働を確保できます。いずれかのコンテナーに障害が発生しても、もう一方を中断することなく再起動できます。 このシナリオでは、*.abbyy.com のライセンス サーバーに接続する Online License を使用します。
ABBYY Licensing Service は、同時に 1 つの Online License でのみ動作できます。
必要なもの:
  • Online License のトークン ファイル
  • ライセンス トークン ファイルのパスワード
ABBYY Licensing Service がインストールされている環境で Online License を使用するには、次の条件を満たしている必要があります。
  • 有効なインターネット接続
  • ポート 443 (HTTPS) 経由で *.abbyy.com への接続が許可されていること
  • ca-certificates パッケージに GoDaddy Trusted Root Certification Authority が含まれていること (詳細は GoDaddy の website を参照)
Docker コンテナーで ABBYY FineReader Engine 12 を実行するには:
  1. 使用するマシンに DockerDocker Compose をダウンロードしてインストールします。
  2. 空のディレクトリを作成し、次のファイルを配置します。
  • Dockerfile_ls — Licensing Service を含むコンテナー用の Dockerfile (内容は 以下 を参照)
Dockerfile_ls は、Dockerfile_worker からビルドされた 1 つのコンテナーとのみ連携するコンテナーをビルドすることを前提としています。ABBYY FineReader Engine を含むコンテナーの複数のレプリカが 1 つの Licensing Service で動作するように構成しないでください。
注: このコンテナーは /standalone キーを付けて Licensing Service を実行します。このキーを使用すると、Licensing Service はフォアグラウンド プロセスとして動作します。これは Docker コンテナーで運用する際のベスト プラクティスです。
  • Dockerfile_worker — ABBYY FineReader Engine を含むコンテナー用の Dockerfile (内容は 以下 を参照)
  • wrapper.sh — サンプルを実行し、結果をコンソールに表示するためのコマンドライン スクリプト (内容は 以下 を参照)
  • docker-compose.yml — Docker Compose の構成ファイル (内容は 以下 を参照)
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"]
Code Samples Libraryで、CLI 引数の詳細を確認してください。
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 コンテナーを使用します。 
# ここで GCC のバージョン 8 を使用しているのは、ubuntu bionic のデフォルト GCC であるためで、
# あくまで一例です
# 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 のインストール ライセンス管理 アクティベーション