Dockerを使用したLiferay環境の構築について - Dockerを使用したLiferay環境の構築について - aegif Labo Blog Liferay
null Dockerを使用したLiferay環境の構築について
今回はDockerを使用してLiferayの環境を構築する方法を紹介します。 Dockerをお持ちでない方は公式サイトからダウンロード、インストールしてください。
基本的な方法(カスタマイズなし)
環境構築と初回起動
- Docker Hubから使用したいバージョンのDockerイメージを取得します。Liferay Portal (CE)のDockerイメージはこちら、Liferay DXPのDockerイメージはこちらのLiferay Docker Hubページをご参照ください
docker pull liferay/dxp:7.4.13-u44
- 取得したイメージを用いてコンテナを作成し、起動します。
docker run -d -p 8080:8080 liferay/dxp:7.4.13-u44
--name [名前]
オプションによりコンテナ名を指定してください(未指定の場合、ランダムな文字列となります) - 起動後、
docker logs -f [コンテナ名]
を実行しコンテナログを監視します - Liferayの起動完了を示すログ(
org.apache.catalina.startup.Catalina.start Server startup in [x] milliseconds
)が表示された後、ブラウザでhttp://localhost:8080
を開きアクセスできることを確認します- Dockerイメージで環境構築を行なった場合、デフォルトの管理者情報はメールアドレス: test@liferay.com、パスワード: testとなっています。
- Liferay DXPのDockerイメージにより環境を構築した場合、トライアルライセンスが適用されています。このライセンスはDockerイメージをLiferay社が作成した日時から30日間有効です。
コンテナの停止
- 通常は以下のコマンドを実行することで停止します。
docker exec [コンテナ名] /opt/liferay/tomcat/bin/shutdown.sh
- 異常時など上記のコマンドが使用できない場合は、以下のコマンドで強制停止できます。
docker stop [コンテナ名]
docker kill [コンテナ名]
カスタマイズ方法
コンテナのメモリサイズを設定する
コンテナ作成時のコマンドに-m 8g
のように-mオプションを使用することでメモリサイズを指定することができます(単位はb,k,m,gのいずれか)
コンテナにファイルを提供する
フォルダのバインドマウント
Liferayコンテナではカスタマイズをスムーズに行うため、/mnt/liferay/
以下と/usr/local/liferay/scripts/
以下をスキャンして特定の操作を行う仕様となっています。 そのため、以下の手順によりこれらのフォルダをバインドマウントしておくことで容易にカスタマイズを行うことができます。
- ホスト側のフォルダ(
[host-path]
)以下に、以下の構成でフォルダを作成します[host-path] ├───liferay │ ├───deploy │ ├───files │ ├───patching │ └───scripts └───scripts ├───pre-startup ├───pre-configure └───post-shutdown
[host-path]/liferay
を/mnt/liferay
に、[host-path]/scripts
フォルダを/usr/local/liferay/scripts
に、それぞれバインドマウントします。[host-path]
は絶対パスで入力する必要があるのでご注意ください。docker run -d -p 8080:8080 \ --mount type=bind,source=[host-path]/liferay,target=/mnt/liferay \ --mount type=bind,source=[host-path]/scripts,target=/usr/local/liferay/scripts \ liferay/dxp:7.4.13-u44
ライフサイクルフェーズごとの処理内容
Liferayコンテナには以下のライフサイクルフェーズがあり、各フェーズに応じたカスタマイズ用処理が実行されます。
- 事前設定
/usr/local/liferay/scripts/pre-configure
内のスクリプトをアルファベット順に実行します
- 設定
- Liferay Home(
/opt/liferay
)以下のフォルダに、/mnt/liferay/files
以下のファイルをコピーします。 - Liferay Home(
/opt/liferay
)に、/mnt/liferay/scripts
のファイルをコピーし、各スクリプトをアルファベット順に実行します /mnt/liferay/deploy
を/opt/liferay/deploy
にシンボリックリンクし、同時にこれらのフォルダにコピーされたファイルを自動デプロイするよう設定します。自動デプロイされたファイルは/opt/liferay/osgi
以下の適切なフォルダに移動されます。/mnt/liferay/patching
にパッチツールファイルやパッチファイルが入っている場合、それらをインストールします
- Liferay Home(
- 起動前
/usr/local/liferay/scripts/pre-startup
内のスクリプトをアルファベット順に実行します
- Tomcat起動
- Catalinaスクリプトを使用し、Tomcatを起動します
- シャットダウン後(
/opt/liferay/tomcat/bin/shutdown.sh
を実行し、Tomcatが停止した後)/usr/local/liferay/scripts/post-shutdown
内のスクリプトをアルファベット順に実行します
TomcatのJVMオプションをカスタマイズする
Tomcatのsetenv.sh
を上書きすることでJVMオプションを追加/更新できます。 デフォルトの設定を削除しないようにするため、以下のような手順でLiferayコンテナからsetenv.sh
ファイルをコピーし、それを修正するようにしてください(上述のバインドマウントの設定がされている前提です)
- ホストフォルダに以下のサブフォルダを作成します
mkdir -p [host-path]/liferay/files/tomcat/bin
setenv.sh
ファイルをコンテナからコピーしますdocker cp [コンテナ名]:/opt/liferay/tomcat/bin/setenv.sh [host-path]/liferay/files/tomcat/bin/
[host-path]/liferay/files/tomcat/bin/setenv.sh
を開き、JVMオプションを修正します- コンテナを停止します
docker exec [コンテナ名] /opt/liferay/tomcat/bin/shutdown.sh
- コンテを再開します(
docker ps
などで前手順の操作によりコンテナが停止していることを確認してから実行してください)docker start [コンテナ名]
また、コンテナ作成時にLIFERAY_JVM_OPTS
環境変数を指定することで、その内容をTomcatのCATALINA_OPTS
変数に追加するという方法もあります。 この環境変数ではスペース文字はバックスラッシュによりエスケープし、引用符は使用できません。例えば最小ヒープサイズ(-Xms)と最大ヒープサイズ(-Xmx)を共に2048MBにする場合は、下記のようになります。
docker run -d -p 8080:8080 -e LIFERAY_JVM_OPTS=-Xmx2048m\ -Xms2048m liferay/dxp:7.4.13-u44
なお、setenv.sh
とLIFERAY_JVM_OPTS
環境変数の両方で同じオプションを指定した場合、環境変数で設定した内容が優先されます。
ポータルプロパティをカスタマイズする
通常のプロパティについて
コンテナのポータルプロパティは、portal-ext.properties
ファイルを/opt/liferay
に配置することで上書きすることができます。 バインドマウントを利用した手順は以下の通りです。
[host-path]/liferay/files
に、portal-ext.properties
ファイルを作成します。ファイルには上書きしたいプロパティを以下の例のように記載しますjdbc.default.jndi.name=jdbc/MyPool
- コンテナを停止します
docker exec [コンテナ名] /opt/liferay/tomcat/bin/shutdown.sh
- コンテナを再開します(
docker ps
などで前手順の操作によりコンテナが停止していることを確認してから実行してください)docker start [コンテナ名]
特別なプロパティについて
以下のプロパティはLiferayイメージにて環境変数としてデフォルト値が定義されています。
LIFERAY_MODULE_PERIOD_FRAMEWORK_PERIOD_PROPERTIES_PERIOD_OSGI_PERIOD_CONSOLE=0.0.0.0:11311 #module.framework.properties.osgi.console
LIFERAY_SETUP_PERIOD_WIZARD_PERIOD_ADD_PERIOD_SAMPLE_PERIOD_DATA=false #setup.wizard.add.sample.data
LIFERAY_SETUP_PERIOD_WIZARD_PERIOD_ENABLED=false #setup.wizard.enabled
LIFERAY_TERMS_PERIOD_OF_PERIOD_USE_PERIOD_REQUIRED=false #terms.of.use.required
LIFERAY_USERS_PERIOD_REMINDER_PERIOD_QUERIES_PERIOD_ENABLED=false #users.reminder.queries.enabled
環境変数での定義はportal-ext.properties
の設定よりも優先されるため、これらのプロパティを変更したい場合は以下のいずれかの方法を行う必要があります。
- 以下のようにコンテナ実行時に環境変数を指定し、デフォルト値を上書きします(Liferayイメージで定義されていないプロパティについても、本手順を行うことで
portal-ext-properties
を用いずに設定することが可能です。各プロパティに対応する環境変数はPortal Propertiesをご参照ください)docker run -d -e LIFERAY_TERMS_PERIOED_OF_PERIOD_USE_PERIOD_REQUIRED=true \ -p 8080:8080 liferay/dxp:7.4.13-u44
- 以下のようにコンテナ実行時に環境変数を割り当てなしで宣言することで環境変数を無効化できます。これにより他のプロパティと同様に
portal-ext.properties
の設定が有効となりますdocker run -d -e LIFERAY_TERMS_PERIOED_OF_PERIOD_USE_PERIOD_REQUIRED \ -p 8080:8080 liferay/dxp:7.4.13-u44
システムプロパティをカスタマイズする
コンテナのシステムプロパティは、system-ext.properties
ファイルを/opt/liferay/tomcat/webapps/ROOT/WEB-INF/classes/
に配置することで上書きすることができます。 バインドマウントを利用した手順は以下の通りです。
[host-path]/liferay/files/tomcat/webapps/ROOT/WEB-INF/classes
に、system-ext.properties
ファイルを追加します。ファイルには上書きしたいプロパティを以下の例のように記載しますnet.sf.ehcache.skipUpdateCheck=false
- コンテナを停止します
docker exec [コンテナ名] /opt/liferay/tomcat/bin/shutdown.sh
- コンテナを再開します(
docker ps
などで前手順の操作によりコンテナが停止していることを確認してから実行してください)docker start [コンテナ名]
システム設定をカスタマイズする
システム設定は管理者権限を持つユーザでログインし、コントロールパネルから設定することもできますが、ここでは構成ファイル(.config
ファイル)を使用したカスタマイズ方法について解説します。 現在の設定の.config
ファイルは、コントロールパネル→システム設定の右上メニューから全設定をエクスポートを実行するか、個別の設定画面の右上メニューからエクスポートを実行することで取得できます(個別の設定画面からのエクスポートの場合、その設定が保存されている必要があります)。
バインドマウントを使用する方法
.config
ファイルを、[host-path]/liferay/files/osgi/configs
にコピーし、コンテナを起動することで構成ファイルを適用できます。フォルダにファイルを置くだけのため簡便に実行できますが、コンテナが既に起動している場合再起動が必要となります。
直接コピーする方法
以下のようにdocker cp
コマンドを使用し、直接/opt/liferay/osgi/configs
にコピーすることもできます。この方法ではコンテナの再起動が不要なため、実行中のコンテナの設定を置き換えたい際に便利です。
docker cp [.configファイル] [コンテナ名]:/opt/liferay/osgi/configs
モジュールやテーマをデプロイする
対象のjarまたはwarファイルを、[host-path]/liferay/deploy
にコピーすることでデプロイされます。 デプロイの内容によっては有効にするためにコンテナの再起動が必要です(サービスモジュールのメソッドシグネチャを修正した場合など)
DXPのライセンスを更新する
DXPのDockerイメージには作成から30日間有効なトライアルライセンスが入っていますが、新しいライセンス(アクティベーションキー)を持っている場合は以下の手順により置き換えることができます。
- コンテナでBashシェルを開きます
docker exec -it [コンテナ名] bash
- 既存のライセンスファイルを削除します
rm /opt/liferay/data/license/*
- OSGiモジュールフォルダから、全てのトライアルライセンスとアクティベーションキーファイルを削除します
rm /opt/liferay/osgi/modules/*license*.xml /opt/liferay/osgi/modules/*activation*.xml
- Bashシェルを終了します
exit
- 新しいライセンス(アクティベーションキー)を
[host-path]/liferay/deploy
にコピーします
今回の内容は以上となります。Dockerを使用することで簡単に環境構築を行えますので、ぜひお試しください。