Dockerイメージの作成方法
最終更新日: 2021年9月9日
R8 | R9
ご利用の開発環境に Docker をインストールします。Windows 用には「Docker Desktop for Windows」、Mac OS X 用には「Docker Desktop for Mac」が用意されています。
ビルドしたアプリケーションを一つのサーバで動作させる場合、設計方針の影響はありません。
ビルドしたアプリケーションを複数のサーバ(正確にはコンテナ)で起動する場合や、オートスケールを行う場合は "環境 > オートスケール環境で運用する" を参照してください。
外部データベースを利用する場合、ネットワーク経由で接続できるように、接続先データベースの URL に適切なホスト名を指定してください。IPアドレスによる指定を行うことはできません。
ビルドしたアプリケーションから Docker コンテナを作成するために、次のカスタマイズファイルを配置してください。
このファイルを適用すると、これまで wagbyapp/logs/system.log に出力されていたログが、標準出力のみに出力するようにします。これにより docker logs コマンドによるログ閲覧や、Docker log driverによる各種出力先に対応できるようになります。[後述]
なお、この修正により "管理処理 > システムログ閲覧"、"管理処理 > 統計情報"、ログを監視するジョブ(AlterMailFromLog)機能は利用できなくなります。詳細は "環境 > オートスケール環境で運用する > システムログ閲覧" をご覧下さい。
これまでファイルとして出力されていたTomcatのログ(catalina.yyyy-MM-dd.log)を、標準出力のみに出力するようにします。目的は上と同じです。
WagbyDesginerでビルドした後、次の手順でDockerイメージを作成し、起動します。
最初は外部データベースを使わず、内蔵データベース(HSQLDB)を使って動作確認するものとします。
docker build コマンドを使って Docker イメージを作成します。
ここで "jasminesoft/wagbyapp" はイメージの名前になります。変更した場合は以降の説明文も適切に読み替えてください。
次の Dockerfile を提供しています。
なお一時的な変更であれば Dockerfile を編集せず、docker build コマンド実行時に --build-arg パラメータを指定することで、上書きすることもできます。例を示します。
内蔵データベース (HSQLDB) を用いている場合、次のコマンドで起動させることができます。
Docker イメージ起動後、ブラウザから次の URL にアクセスして動作を確認します。
Dockerコンテナ内に作成されたファイルは、コンテナが削除されると同時に削除されます。これはエクスポートしたデータや、アップロードしたファイルに影響があります。
この対応のため、DockerのData Volumeの機能を使って、ホスト内のフォルダに保存するようにします。
具体的には -v オプションにて、ホスト内のフォルダとコンテナ内のフォルダをつなげます。次のようにします。
この例では、コンテナの /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 オプションで次の環境変数を指定してください。
例を示します。
ここで紹介した3つのファイルをダウンロードできます。
次のファイルが含まれています。
Dockerのインストール
準備
アプリケーション設計方針の影響
外部データベースの利用
Docker向けのカスタマイズファイル
customize/resource/log4j2.xml
customize/tomcat/conf/logger.properties
Dockerイメージの作成
1. Dockerイメージの作成
docker build -t jasminesoft/wagbyapp .
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
docker build -t jasminesoft/wagbyapp . --build-arg WAGBY_WEBAPPS_DIR=aaa
2. Dockerイメージの起動
docker run -d --rm -p 8888:8080 --name wagbyapp1 jasminesoft/wagbyapp
http://localhost:8888/wagby/
データボリューム
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
メモリ指定
Wagby固有の環境変数 説明
WAGBY_MX -Xmxの指定をデフォルトから変更する。
WAGBY_MS -Xmsの指定をデフォルトから変更する。
WAGBY_CATALINA_OPTS CATALINA_OPTSの指定をすべて上書きする。
WAGBY_APPEND_CATALINA_OPTS CATALINA_OPTSの指定に追加で設定する。例えばjconsoleの設定の追加などが行える。
docker run -d --rm -p 8888:8080 --name wagbyapp1 --env WAGBY_MX=1024m --env WAGBY_MS=256m jasminesoft/wagbyapp
ダウンロード