2017-09-27 9 views
0

私はbitnami/tomcatイメージで複数のDockerコンテナを実行していますが、すべてのインスタンスで読み取り専用の設定を共有したいとします。dockerfileを使用して複数のドッカーインスタンス間でTomcat設定を共有しますか?

すべてのインスタンスには、特定のライブラリ、データソースなどの同じ構成が含まれます。私はすでに物理的なTomcatサーバーで使用されている構成を証明し、テストしました。インスタンスが実行される前にこの構成が準備できることがわかります。

アプリケーションがすべてのインスタンス(構成が共有されているので、一度実際にコピーされた)に展開することができ、それは私が

-v ${persistence_path}:/bitnami 
を使用設け、容器内 /bitnamiフォルダを指すフォルダ ${persistence_path}/tomcat/dataをホストするWARファイルをコピーすることによって行うことができます

の場合running the instance

私はそれがイメージが作成された方法の信頼性の高い記録を提供していないので、それは、スクリプトまたはdockerfileいうよりcommiting a new imageすることによるように、インスタンスを作成するための再現可能な方法を探しています質問

が。前者を使用することで、画像が破損したり生産現場で失われる可能性を避けます。

設定を複数のインスタンスで共有することはできますか?

これは最善のアプローチですか?インスタンスが起動した後に私は風袋設定を変更しないでしょう。そうすれば、一度変更してすべてのインスタンスに反映するように新しい設定でインスタンスを再実行できますか?

commandsの代わりにドッカーファイルを使用できますか? -vVOLUMEと完全に互換性があるとは思わない。

答えて

1

あなたは読み取り専用としてあなたがイメージビルド時に自分の成果物とコンフィギュレーションをコピーするなど、bitnami/tomcatから始まる独自のTomcatの画像を作成することができますthe :ro option of -v

docker run -v /your/host/dir:/bitnami:ro YOUR_IMAGE 

を使用してディレクトリをマウントすることができます。その後、実行時に-vオプションを使用してそれらを上書きすることができます。

不変のコンテナ(ビルド時のデータがロックされている)が必要な場合は、持っているすべてのサービスのイメージを作成する必要があります。それ以外の場合は、image descriptionに記載されているように、ボリュームバインディングアプローチを使用できます。

1

bitnami/tomcatイメージは、ボリュームからリストアデータを取得するか、ボリュームを初期化するかを決定するために単純なメカニズムを使用します。

起動時に、コンテナは/bitnami/tomcat/.initializedファイルが存在するかどうかをチェックします。

  • このファイル存在しない場合:Tomcatを設定し、ボリュームに/opt/bitnami/tomcat/{conf,data}フォルダを移動しますコンテナ(これは最初の実行時に起こります)。次に、元のフォルダをボリューム内のフォルダにリンクします。

Tomcatのフォルダ最初の実行後:

[email protected]:/# ls -la /opt/bitnami/tomcat/{conf,data} 
lrwxrwxrwx 1 root root 20 Sep 28 13:49 /opt/bitnami/tomcat/conf -> /bitnami/tomcat/conf 
lrwxrwxrwx 1 root root 20 Sep 28 13:49 /opt/bitnami/tomcat/data -> /bitnami/tomcat/data 
  • このファイル存在しない場合は、次のコンテナは、ボリューム内のフォルダに戻すのTomcatのconfとデータフォルダをリンク(そしておそらく唯一のでしょう権限を修正する)。

したがって、ボリューム構造は次のスキーマに従います。

[email protected]:/# tree -L 1 -a /bitnami/tomcat 
/bitnami/tomcat 
├── conf 
├── data 
└── .initialized 

2 directories, 1 file 

あなたがTomcatの初期化が(実行時に)行われます後/bitnami/tomcat/confにデフォルトの設定を上書きするか、ビルド時に/opt/bitnami/tomcat/confにデフォルトの設定をオーバーライドする必要がありますいずれかの独自の構成を追加したい場合。

これは、あなたが可能性のいずれかの意味:

  • bitnami/tomcatから延び、/opt/bitnami/tomcat/confにコンフィギュレーションをコピーします。
  • 実行時に(既知のフォルダに)コンテナに構成をマウントし、app-entrypoint.shファイルを変更して/bitnami/tomcat/confフォルダをオーバーライドします。
  • Tomcatコンテナが少なくとも一度は、お使いの設定でローカルボリュームにconfフォルダを上書きするファイル名を指定して実行
  • (上記と同じですが、docker cpでコピー)実行時にコンテナにコンフィギュレーションをコピーします。
関連する問題