コンテナへのファイルの提供
Liferayコンテナは、提供されたファイルを使用して、次のユースケースを実行します。
.properties
ファイルと.config
ファイルでLiferayを構成する- Tomcatを構成する
- アプリとその他のアーティファクトをデプロイする
- パッチツールを更新する
- DXPをパッチする
- スクリプトを実行する
コンテナが主要なキーコンテナフォルダー内の特定のフォルダーでファイルを見つけた場合、すべてのユースケースはコンテナの作成時にトリガーできます。
主要なコンテナフォルダ:
/mnt/liferay
/user/local/liferay/scripts
コンテナライフサイクルおよびAPI は、スキャンされたサブフォルダ、コンテナがそれらをスキャンするフェーズ、およびそれらのファイルに対して実行されるアクションを指定します。
いくつかの方法でコンテナにファイルを提供できます。
ファイルを提供する方法:
アーティファクトのデプロイと .config
ファイルの使用を除いて、すべての使用例では、コンテナの作成時にファイルを使用できるようにする必要があります。 バインドマウントとボリュームはこれを実現します。 アーティファクトのデプロイと .config
ファイルの適用は、バインドマウントとボリュームを使用してコンテナを作成するか、実行時に docker cp
を使用して実行できます。
バインドマウントは、ファイルを提供するためのボリュームよりも単純であるため、ここでの例で使用されています。 コンテナにマウントするためのファイルを準備するときは、管理しやすい方法でファイルを整理すると便利です。 ここでは、Liferayコンテナへのバインドマウント、ファイルの整理、および docker cp
の使用について説明します。
バインドマウント形式
docker run
コマンドにバインドマウントをいくつでも指定できます。 各バインドマウントは次の形式に従います。
-v [source path in host]:[destination path in container]
バインドマウントソースは、ホスト内の任意のフォルダパスまたはファイルパスにすることができます。 バインドマウント先は、コンテナ内の任意のフォルダパスまたはファイルパスにすることができます。
スキャンされたコンテナフォルダ
コンテナはこれらのフォルダをスキャンします。
/mnt/liferay/deploy
/mnt/liferay/files
(すべてのファイルとサブフォルダはスキャンされます)/mnt/liferay/patching
/mnt/liferay/scripts
/usr/local/liferay/scripts/post-shutdown
/usr/local/liferay/scripts/pre-configure
/usr/local/liferay/scripts/pre-startup
各フォルダに関連付けられているアクションと使用例については、 API を参照してください。
バインドマウント用のファイルの整理
Liferayコンテナのバインドマウントは、いくつかの方法で整理できます。
- キーフォルダの 1 つまたは両方にバインドします:
/mnt/liferay
、/usr/local/liferay/scripts
- サブフォルダーにバインドする
- サブフォルダーとファイルの組み合わせにバインドする
次の表に、バインドマウントメソッドの例をいくつか示し、それらの長所と短所を説明します。
バインドマウントの例
メソッド | 例 | 長所 | 短所 |
---|---|---|---|
/mnt/liferay にマウント | -v[host-path]:/mnt/liferay | 入力ファイルを一元化します。 | 入力ファイルは、コンテナが予期するサブフォルダーに編成する必要があります( ロケーションがリストされている 上記 を参照してください)。 |
/mnt/liferay サブフォルダーに個別にマウント | -v [host-path]/[folder-1]:/mnt/liferay/deploy -v [host-path]/[folder-2]:/mnt/liferay/files 注: [host-path] は同じパスまたは異なるパスでも可能です。 | ホスト上のさまざまな場所で入力ファイルグループを使用する柔軟性。 | 管理するホストファイルの場所が増えました。 |
個々のファイルにマウント | -v [host path]/setenv.sh:/mnt/liferay/files/tomcat/bin/setenv.sh | 入力ファイルは、 docker run コマンドで明確に表示されます。 | 長いdocker実行コマンド。 管理するホストファイルのロケーションがさらに増えます。 |
コンテナの 構成フェーズ ファイルを提供する最も一般的な方法は、ホストフォルダーをコンテナの /mnt/liferay
フォルダーにバインドマウントすることです。
ホストフォルダを /mnt/liferay
にバインドマウントする
Liferayへの構成、パッチ適用、およびデプロイのためのファイルを集中管理する場合は、ホストフォルダをコンテナの /mnt/liferay
フォルダにバインドマウントすることを検討してください。
ユースケース記事のほとんどの例では、このバインドマウント戦略を使用しています。
手順は次のとおりです。
-
ホスト上のフォルダーをベースフォルダーとして機能するように指定します。
-
ベースホストフォルダーで、コンテナが作用するすべての
/mnt/liferay
サブフォルダーに対応するサブフォルダーを作成します。 コンテナフォルダの詳細は、コンテナのライフサイクルとAPIを参照してください。cd [host folder] mkdir deploy files patching scripts
結果:
[host folder] ├───deploy ├───files ├───patching └───scripts
noteすべてのサブフォルダを作成する必要はありません。入力するサブフォルダだけを作成します。
-
コンテナが動作するファイルをサブフォルダに入れます。
例えば、
portal-ext.properties
ファイルを追加して 、DXPを構成し、 セキュリティフィックスパック を追加してインストールできます。結果:
[host folder] ├───deploy ├───files/portal-ext.properties ├───patching/[Security Fix Pack file name].zip └───scripts
-
docker run
コマンドで、ベースホストフォルダーをコンテナの/mnt/liferay
フォルダーにバインドマウントします。docker run -v [host folder path]:/mnt/liferay ...
コンテナライフサイクル に従って、新しいコンテナはマウントされたホストフォルダ内のファイル(およびネストされたフォルダ)に作用し、Tomcatを起動します
docker cp
を使用する
docker cp
コマンドは、アプリケーション、モジュール、および構成をDockerコンテナにデプロイするための便利な代替手段です。
docker cp [file] [container]:[folder path]
アプリケーションのデプロイ:
docker cp some_app.lpkg my_container:/opt/liferay/deploy
設定ファイルのデプロイ:
docker cp com.liferay.journal.configuration.JournalServiceConfiguration.config my_container:/opt/liferay/osgi/configs
macOSで docker cp
を使用するとuser/group liferay
に変更するのではなく、ファイルの所有権が保持されます。 いくつかの回避策です:
-
tar
を、docker cp
コマンドの入力として使用し、ファイルの所有権とパーミッションを設定します。 以下に例を示します。tar -cf - command.sh --mode u=+rwx,g=-wx,o=-wx --owner liferay --group liferay | docker cp - my_container:/usr/local/liferay/scripts/pre-startup
-
docker cp
を使用した後、コンテナ内でBashセッションを開き、ファイルの所有権を変更します。docker exec -it my_container bash
chown -R liferay:liferay /usr/local/liferay/scripts/pre-startup/command.sh
まとめ
バインドマウントと docker cp
コマンドを使用してコンテナにファイルを提供する方法をマスターしました。 詳細は、 コンテナのライフサイクルとAPI を参照してください。 ユースケースの詳細は、次の記事を参照してください。