Dockerイメージの作成方法

最終更新日: 2021年9月9日
R8 | R9

Dockerのインストール

ご利用の開発環境に Docker をインストールします。Windows 用には「Docker Desktop for Windows」、Mac OS X 用には「Docker Desktop for Mac」が用意されています。

準備

アプリケーション設計方針の影響

ビルドしたアプリケーションを一つのサーバで動作させる場合、設計方針の影響はありません。

ビルドしたアプリケーションを複数のサーバ(正確にはコンテナ)で起動する場合や、オートスケールを行う場合は "環境 > オートスケール環境で運用する" を参照してください。

外部データベースの利用

外部データベースを利用する場合、ネットワーク経由で接続できるように、接続先データベースの URL に適切なホスト名を指定してください。IPアドレスによる指定を行うことはできません。

Docker向けのカスタマイズファイル

ビルドしたアプリケーションから Docker コンテナを作成するために、次のカスタマイズファイルを配置してください。

customize/resource/log4j2.xml

このファイルを適用すると、これまで wagbyapp/logs/system.log に出力されていたログが、標準出力のみに出力するようにします。これにより docker logs コマンドによるログ閲覧や、Docker log driverによる各種出力先に対応できるようになります。[後述]

なお、この修正により "管理処理 > システムログ閲覧"、"管理処理 > 統計情報"、ログを監視するジョブ(AlterMailFromLog)機能は利用できなくなります。詳細は "環境 > オートスケール環境で運用する > システムログ閲覧" をご覧下さい。

customize/tomcat/conf/logger.properties

これまでファイルとして出力されていたTomcatのログ(catalina.yyyy-MM-dd.log)を、標準出力のみに出力するようにします。目的は上と同じです。

Dockerイメージの作成

WagbyDesginerでビルドした後、次の手順でDockerイメージを作成し、起動します。

  1. Dockerイメージの作成
  2. Dockerイメージの起動

最初は外部データベースを使わず、内蔵データベース(HSQLDB)を使って動作確認するものとします。

1. Dockerイメージの作成

docker build コマンドを使って Docker イメージを作成します。

docker build -t jasminesoft/wagbyapp .

ここで "jasminesoft/wagbyapp" はイメージの名前になります。変更した場合は以降の説明文も適切に読み替えてください。

Dockerfile

次の Dockerfile を提供しています。

FROM tomcat:9
LABEL maintainer="xxx@YOURDOMAIN"
ARG WAGBY_WEBAPPS_DIR="wagby"

ADD ./wagbyapp/conf/web.xml $CATALINA_HOME/conf/web.xml
ADD ./wagbyapp/conf/context.xml $CATALINA_HOME/conf/context.xml
ADD ./wagbyapp/conf/app_jaas.config $CATALINA_HOME/conf/app_jaas.config
ADD ./wagbyapp/conf/logging.properties $CATALINA_HOME/conf/logging.properties
ADD ./wagbyapp/conf/catalina.properties $CATALINA_HOME/conf/catalina.properties
ADD ./wagbyapp/lib/j_conint.jar $CATALINA_HOME/lib/j_conint.jar
ADD ./wagbyapp/bin/setenv.sh $CATALINA_HOME/bin/setenv.sh

# Database JDBC Driver
ADD ./customize/tomcat/lib $CATALINA_HOME/lib
ADD ./wagbyapp/lib/hsqldb.jar $CATALINA_HOME/lib/hsqldb.jar

# Web application
ADD ./wagbyapp/webapps/$WAGBY_WEBAPPS_DIR $CATALINA_HOME/webapps/$WAGBY_WEBAPPS_DIR

WORKDIR $CATALINA_HOME/bin
  • 先頭の FROM 文で、ベースは Docker Hub で提供している Tomcat 9 であることを指定しています。さらに細かいバージョンを指定することもできます。詳細は公式リポジトリを確認してください。
  • 2行目の maintainer 指定には、開発者のメールアドレスを設定するようにしてください。
  • 3行目のWAGBY_WEBAPPS_DIRは、Designerの環境 - プロジェクト情報に指定されているプロジェクト識別子を指定してください。Wagbyのインストール直後は「wagby」となっています。ルートデプロイの場合は「ROOT」と指定してください。

なお一時的な変更であれば Dockerfile を編集せず、docker build コマンド実行時に --build-arg パラメータを指定することで、上書きすることもできます。例を示します。

docker build -t jasminesoft/wagbyapp . --build-arg WAGBY_WEBAPPS_DIR=aaa

2. Dockerイメージの起動

内蔵データベース (HSQLDB) を用いている場合、次のコマンドで起動させることができます。

docker run -d --rm -p 8888:8080 --name wagbyapp1 jasminesoft/wagbyapp
  • -dはバックグラウンドでの実行を意味します。
  • --rmは起動したDockerコンテナを終了(stop)したら、このDockerコンテナを削除するという指定です。
  • -p 8888:8080は、コンテナ内の8080番ポートをホストの8888番ポートに割り当てるという指定です。
  • --nameは起動したコンテナに名前を付けています。コンテナの管理で利用します。
  • jasminesoft/wagbyappは、起動するDockerイメージです。

Docker イメージ起動後、ブラウザから次の URL にアクセスして動作を確認します。

http://localhost:8888/wagby/

データボリューム

Dockerコンテナ内に作成されたファイルは、コンテナが削除されると同時に削除されます。これはエクスポートしたデータや、アップロードしたファイルに影響があります。

Wagbyではexportフォルダにエクスポート時にファイルが作成されます。ファイル型項目でアップロードしたファイルはupload_dirフォルダに作成されます。

この対応のため、DockerのData Volumeの機能を使って、ホスト内のフォルダに保存するようにします。 具体的には -v オプションにて、ホスト内のフォルダとコンテナ内のフォルダをつなげます。次のようにします。

docker run -d --rm -p 8888:8080 --name wagbyapp1 -v C:\Wagby-9.0.2\upload_dir:/usr/local/upload_dir -v C:\Wagby-9.0.2\export:/usr/local/export jasminesoft/wagbyapp

この例では、コンテナの /usr/local/upload_dir フォルダを、実際のホストマシン(Windows OS)の Wagby-9.0.2\upload_dir フォルダにマッピングしています。同様に /usr/local/export フォルダを、実際のホストマシン(Windows OS)の Wagby-9.0.2\export にマッピングしています。(コンテナ内で動作する)Wagby アプリケーションでは、それぞれ /usr/local/upload_dir フォルダと /usr/local/export フォルダを利用するようになっていると解釈してください。

メモリ指定

メモリサイズの指定を実行時に行うことができます。docker run コマンドの --env オプションで次の環境変数を指定してください。

Wagby固有の環境変数説明
WAGBY_MX-Xmxの指定をデフォルトから変更する。
WAGBY_MS-Xmsの指定をデフォルトから変更する。
WAGBY_CATALINA_OPTSCATALINA_OPTSの指定をすべて上書きする。
WAGBY_APPEND_CATALINA_OPTSCATALINA_OPTSの指定に追加で設定する。例えばjconsoleの設定の追加などが行える。

例を示します。

docker run -d --rm -p 8888:8080 --name wagbyapp1 --env WAGBY_MX=1024m --env WAGBY_MS=256m jasminesoft/wagbyapp

ダウンロード

ここで紹介した3つのファイルをダウンロードできます。

次のファイルが含まれています。

  • Dockerfile
  • Dockerfile.encryptpwd
  • customize/tomcat/conf/logging.properties
  • customize/resources/log4j2.xml