このセクションでは、ABBYY FineReader Engine 12 を Docker コンテナー内で実行する手順について説明します。このシナリオでは、次の 2 つのコンテナーを使用します。
- ABBYY FineReader Engine を含むコンテナー
- 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 を実行するには:
- 使用するマシンに Docker と Docker Compose をダウンロードしてインストールします。
- 空のディレクトリを作成し、次のファイルを配置します。
- 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 のトークン ファイル
- docker-compose.yml の次の行で、ライセンスのパラメーターを指定します。
args:
- license_token=SWRRXXXXXXXXXXXXXXXXXXXX.ABBYY.ActivationToken
- license_password=your_license_password
- コンテナーをビルドして実行するには、次のコマンドを使用します。
サンプルの実行結果がコンソールに表示されます。
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 のインストール
ライセンス管理
アクティベーション