2017-01-21 7 views
7

私はdocker-compose.ymlの設定をしています。コンテナの1つにTomcatサーバーがあり、デフォルトの.warというファイルがwebappsディレクトリに展開されています。ドッキングステーションにボリュームを条件付きで取り付けます

warアーカイブを、ホストマシン上のいくつかによって展開する(上書きする)能力が必要です。私は最良の方法は、何らかの形でスイッチを入れ替えることです/ docker-compose:デフォルトでは、コンテナの中にあるwebapp(warファイル)を実行したいのですが、私のホストからディレクトリをマウントする可能性があります。 (例えば、開発/デバッグの際に)必要に応じて。

現時点では、docker-compose.ymlに次の行があります。これは、デフォルトが必要な場合にコメントアウトされています。

volumes: 
# By default, there is the latest version of the application already present in the container 
# If you want to provider the container with your own .war file, uncomment the following line 
# - ./application/webapps:/usr/local/tomcat/webapps 

これを実現する方法はありますか?

答えて

0

...あなたは、このようなENV変数を使用して、それを上書きする可能性のが.warのファイル名は「app.war」であることを言ってみましょう:

 
volumes: 
- ./application/webapps/${APPLICATION_ENV}.war:/usr/local/tomcat/webapps/app.war 

次に、あなただけの変更別のwarファイルを実行する必要がある場合APPPLICATION_ENVの値をコンテナを実行して再起動するために必要な値に設定します。

docker-composeには「条件付きボリューム」はありませんが、あなたの環境に合わせてapp.warを変更することができます。

他の方法は、それを上書きするdocker-compose up/start後にスクリプトを実行すると、必要なときだけそれを行う、などのことになります。その行をコメントアウトボリュームをマウント

 
docker-compose exec your-container-name cp /a/volume/path/app.war /usr/local/tomcat/webapps/app.war 
5

の代わりに(ではない)、私が使用しますhttps://docs.docker.com/compose/extends/#example-use-caseを実行して、ボリュームを指定するサービス拡張を実行します。ドッキングウィンドウの画像を生産して実行することを意図し、それにバンドルされたすべての必要なファイルを持っているとき、私はボリュームを指定しない

  • 私は2つの異なる問題に取り組むために、これを行います。

  • ライブの変更を確認するために、開発中にボリュームを指定します。
関連する問題