Dockerは、自動でソフトウェアとその依存関係をクロスプラットフォームで共有できる標準化されたユニットにパッケージ化でき、今日の開発ライフサイクルでますます人気が高まっています。詳細については、Dockerの多数あるドキュメンテーションを参照してください。
Liferayでは、Dockerイメージを以下のサービスで提供しています。
LiferayのDockerイメージをこれらのリソースから引き出して、自分で管理することができます。ただし、Liferay Workspaceは、事前に設定されたGradleタスクを使用して、既存の開発ワークフローにDocker開発を統合する簡単な方法を提供します。
このチュートリアルでは、ワークスペース内で以下のタスクを実行する方法を説明します。
Liferay DXPのDockerコンテナの作成
-
必要なDockerイメージを選択します。これは、このプロパティをカスタマイズすることにより、ワークスペースの
gradle.properties
ファイルに設定されます。liferay.workspace.docker.image.liferay
設定可能なプロパティ値を見つけるには、Liferay DXPの公式のDocker Hubのタグセクション(例: Liferay Portal Dockerタグなど)を参照してください。 たとえば、Liferay Portal 7.1 GA2イメージに基づいてコンテナを作成する場合は、以下のプロパティを設定します。
liferay.workspace.docker.image.liferay=liferay/portal:7.1.1-ga2
-
ワークスペースのルートフォルダから次のコマンドを実行します。
./gradlew createDockerContainer
このコマンドは、[projectName]-liferayapp
という名前の新しいコンテナを作成します。ワークスペースに新しいbuild/docker
フォルダが作成されます。このフォルダは、コンテナのファイルシステムにマウントされます。つまり、ワークスペースのbuild/docker
フォルダ内のファイルは、コンテナの/etc/liferay
フォルダでも使用できます。
ワークスペース内のプロジェクトはすべてコンテナ作成時にbuild/docker/deploy
に自動的にコンパイルされ、コピーされます。つまり、コンテナが開始されると、すべてのプロジェクトがコンテナにデプロイされることになります。すべての設定はコンテナにも適用されます。次に、コンテナの設定方法について詳しく説明します。
コンテナの設定方法
コンテナを起動する前に、追加のポータル設定を追加できます。これには以下のようなものが含まれます。
- プロパティのオーバーライド(例:
portal-ext.properties
) - Marketplaceアプリのオーバーライド
- アプリサーバーの設定
- ライセンスファイル
これを行うには、ワークスペースのconfigs/docker
フォルダにファイル(と必要に応じて付随するフォルダ構造)を適用します。このフォルダは、Docker開発用のLiferayホームとして扱われます。ワークスペースのconfigs/common
フォルダとLiferay DXPのコンテナのデフォルト設定をオーバーレイする、追加ファイルを追加します。
たとえば、コンテナのGogoシェルを有効にするには、configs/docker/portal-ext.properties
をワークスペースに以下の設定で追加します。
module.framework.properties.osgi.console=0.0.0.0:11311
これにより、Gonetシェルを使用してtelnetセッション経由でコンテナにアクセスできます。
コンテナが開始されると、configs/commmon
とconfigs/docker
に保存されている設定がbuild/docker/files
フォルダに転送されます。これにより、すべての設定がコンテナのファイルシステムに適用されます。ワークスペースのconfigs
フォルダの詳細については、こちらのセクションを参照してください。
次に、コンテナと対話するためのコマンドを説明します。
コンテナとの対話
startDockerContainer
: コンテナを開始します。
logsDockerContainer
: ポータルのランタイムのログを出力します。実行中のコンテナ(例: [Ctrl|Command] +C)を維持しながら、ログ追跡モードを終了できます。
dockerDeploy
: プロジェクトのアーカイブファイルをワークスペースのbuild/docker/deploy
フォルダにコピーすることにより、プロジェクトをコンテナのdeploy
フォルダにデプロイします。
このコマンドは、ワークスペースのルートフォルダから実行して、すべてのプロジェクトをデプロイし、Docker設定(例: configs/common
およびconfigs/docker
フォルダから)を全部コンテナにコピーすることもできます。
stopDockerContainer
: コンテナを停止します。
removeDockerContainer
: コンテナをDockerのシステムから削除します。
| **注:**コンテナの起動中に、次のエラーが発生する場合があります。|
次に、カスタムイメージを作成する方法を説明します。
カスタムのLiferay DXPイメージのビルド
コンテナの設定をイメージとしてビルドすることにより、保存することができます。カスタムのLiferay DXPイメージを作成するには、以下を実行します。
./gradlew buildDockerImage
Dockerfile
がイメージをビルドするときにコンテナ用に作成されます。これを手動で行うには、以下を実行します。
./gradlew createDockerfile
ワークスペースのbuild/docker
フォルダ内にDockerfile
が作成されます。Dockerfile
の設定方法の詳細については、DockerのDockerfile reference documentationを参照してください。
これで、カスタムイメージが利用可能になります。docker image ls
を実行して、可用性を確認します。
これで、Liferay WorkspaceでLiferayのDockerイメージを管理できるようになりました。