2.4. source-to-image ユーティリティーを使用したアプリケーションイメージのビルド
Red Hat Software Collections オファリングでは、source-to-image
ユーティリティーを提供し、Red Hat Enterprise Linux 7 サーバーでは OpenShift なしで使用できます。
source-to-image
は、Red Hat Enterprise Linux 7 でのみ利用でき、docker
がプルしたイメージとのみ機能します。source-to-image
ユーティリティーで podman
を使用することはできません。
ビルドプロセスは、以下の 3 つの要素で設定されており、これら 3 つの要素が最終的なコンテナーイメージに統合されます。
- アプリケーションのソースコード。プログラミング言語またはフレームワークで記述されています。
-
source-to-image
ユーティリティーを使用してイメージビルドをサポートする Red Hat Software Collections コンテナーイメージ。 - ビルダーイメージの一部である S2I スクリプト。これらのスクリプトの詳細は、「ビルダーイメージとしての Red Hat Software Collections コンテナーイメージ」 を参照してください。
ビルドプロセス時に、source-to-image
ユーティリティーはソースコードおよびスクリプトを含む .tar
ファイルを作成し、そのファイルをビルダーイメージにストリーミングします。
システムで source-to-image
ユーティリティーを使用するには、以下を実行します。
- Red Hat Software Collections にサブスクライブします。手順は、Red Hat Software Collections へのアクセス を参照してください。
source-to-image
パッケージを提供する Red Hat Software Collections Server リポジトリーと、source-to-image
で必要なdocker
パッケージが含まれる Red Hat Enterprise Linux 7 Server リポジトリーを有効にします。# subscription-manager repos --enable rhel-server-rhscl-7-rpms --enable rhel-7-server-extras-rpms
source-to-image
パッケージをインストールします。# yum install source-to-image
コンテナーレジストリーにログインします。
# docker login registry.redhat.io
ビルダーイメージをプルします。
# docker pull registry.redhat.io/rhscl_image_name
アプリケーションのソースコードからアプリケーションイメージをビルドします。
# s2i build path_to_application_source_code_repository --context-dir=source_code_context_directory application_image_name
-
docker
を使用して、作成されるイメージを実行します。
例2.3 source-to-image
ユーティリティーを使用した Git リポジトリーからの Python 3.8 アプリケーションのビルド
この例では、rhscl/python-38-rhel7
ビルダーイメージおよび source-to-image
ユーティリティーを使用して、公開 Git リポジトリーから利用可能なテストアプリケーションをビルドする方法を示しています。
コンテナーレジストリーにログインします。
# docker login registry.redhat.io
rhscl/python-38-rhel7
ビルダーイメージをプルします。# docker pull registry.redhat.io/rhscl/python-38-rhel7
3.8/test/setup-test-app/
ディレクトリーの GitHub s2i-python リポジトリーからテストアプリケーションをビルドします。# s2i build https://github.com/sclorg/s2i-python-container.git --context-dir=3.8/test/setup-test-app/ registry.redhat.io/rhscl/python-38-rhel7 python-38-rhel7-app
これにより、新しいアプリケーションイメージ
python-38-rhel7-app
が作成されます。作成された
python-38-rhel7-app
イメージを実行します。# docker run -d -p 8080:8080 --name example-app python-38-rhel7-app
http://localhost:8080/ から、作成されたサンプルドキュメントを取得します。
$ wget http://localhost:8080/
コンテナーを停止します。
# docker stop example-app
関連資料
- S2I 要件
- GitHub の Source-to-image README ファイル
-
イメージの
/help.1
ファイルまたは、アップストリームの GitHub リポジトリー にある、該当のビルダーイメージの README ファイルの Environment variables for Source-to-Image セクション