Liberty Docker Toolsを使ってEclipseからLibertyコンテナを操作する


EclipseプラグインであるIBM Liberty Developer Toolsを使うとEclipseからLiberty上へアプリケーションのデプロイやデバッグを行うことができます。Docker上で稼働しているLibertyへもデプロイすることができるので試してみました。

プラグインの導入

Eclipse Marketplaceから探します。
https://marketplace.eclipse.org/content/ibm-liberty-developer-tools

WebSphere Application Server Liberty Docker Toolsにチェックを入れて導入します。

Dockerコンテナの準備

Docker Desktopを導入してからDockerイメージを以下から探します。今回は19.0.0.5-kernelを使うことにします。
https://hub.docker.com/_/websphere-liberty/

Liberty Docker Toolsを使う場合は、イメージを作ってコンテナを稼働した状態にしてからEclipseから接続するようなので、まずはイメージを作ります。

Libertyの構成ファイルであるserver.xmlは以下にしました。<administrator-role>要素あることとhttpsで公開していることが必須なようです。<feature>restConnector-2.0</feature>も有効化しました。

<server description="new server">
  <featureManager>
    <feature>localConnector-1.0</feature>
    <feature>servlet-4.0</feature>
    <feature>restConnector-2.0</feature>
  </featureManager>

  <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

  <applicationManager autoExpand="false"/>
  <applicationMonitor updateTrigger="mbean"/>

  <administrator-role>
    <user>admin</user>
  </administrator-role>
  <basicRegistry>
    <user name="admin" password="password"/>
  </basicRegistry>
  <keyStore password="password"/>
</server>

Dockerfileは以下のようにします。上記のserver.xmlをイメージに含めることと、必要なフィーチャーの導入を行うだけです。

FROM websphere-liberty:19.0.0.5-kernel
COPY --chown=1001:0  server.xml /config/
RUN installUtility install --acceptLicense defaultServer

イメージの作成とコンテナの起動

準備ができたので、イメージを作ってコンテナを起動します。ポートを公開します。

docker build -t myimage:0.0.1 .
docker run -d --rm -p 9080:9080 -p 9443:9443 --name mycon myimage:0.0.1

Eclipseから接続

Eclipseに戻ってコンテナへの接続を行います。Server Viewからサーバーの追加を行います。Server in Docker containerを選択します。Refreshボタンを押すと先ほど起動したコンテナが出てきました。<administrator-role>で設定したユーザー、パスワードを入力します。

ホストのmacOSのディレクトリをマウントして良いのでYesを選択します。

アプリケーションを公開します。その都度コンテナを作り直してくれるようです。デバッグモードで起動し直す時も自動的にイメージを作成し直して起動するとことまで自動的に実行されました。

参考