2017-07-12 7 views
1

Tomcatアプリサーバー内で実行されるアプリがあります。それは環境間で変化する可能性がある設定の束を持っています。たとえば、使用するリモートAPIのデータベース資格情報またはホスト/ポートなど。ドッカーコンテナー内のTomcatアプリの設定の処理

デフォルト値は.warファイルに保存されます。基本的に、それらはweb.xmlにあります。パラメータを変更してdocker runに変更する最もよい方法は何でしょうか?

これまでのところ、$CATALINA_HOME/confをボリュームに作成し、単にドッカーホスト上にコンテキストファイルを設定することについて考えています。おそらくもっと良いアプローチがありますか?

環境変数を使用してtomcatを設定する方法が見つかりません。これらのヴァールを読むためにアプリ自体を変更する必要がありますか?

簡単に言えば、構築時にconfigsをイメージ自体にベーキングすることなく、ドッカー内のtomcatアプリケーションをカスタマイズする方法は何ですか?

問題がある場合、私はドッカーハブの公式のTwitterの画像を使用しています。

答えて

1

私は実行時にswarmまたはdocker run -eを介して環境変数を渡し、エントリポイントスクリプトでenvsubstrを使用して、必要なものを入れ替えて解決します。

Dockerfile:

ENTRYPOINT: ["my_script"] 

my_scriptという:

envsubstr <server.dist.xml> server.xml 
catalina.sh start 

server.dist.xml:

<Resource name="jdbc/${DRIVER}" auth="Container" 
       type="javax.sql.DataSource" driverClassName="${DRIVER_NAME}" 
       url="${DRIVER_URL}" 
       username="${NAME}" password="${PASSWORD}" maxActive="20" maxIdle="10" 
       maxWait="-1"/> 

envsubstrgettextの一部ですので、画像内でご確認ください。

関連する問題