2016-04-03 21 views
0

私はドッカーイメージ内にWebアプリケーションを持っています。 Webアプリケーションは、私が作成するたびに、私は別のdirectory.The問題をマウントする必要が私のアプリ内の新しいコンポーネントは、私はあまりにも多くのマウントを持つコマンドで終わるだろうということです、少し複雑です:ドッカーマウントが多すぎます

docker run -v ... -v ... -v ... ... myimage 

ですこのためのよりよい解決策がありますか?

答えて

0

ドッキングの主なアイデアは、どこでも同じ結果(ステートレス)で実行できる不変のコンテナを持つことです。あなたのコンテナが状態を持っている場合は、あなたのアプリケーションに適していないアーキテクチャソリューションがあるかもしれません。アプリケーションを2つに分ける必要があります。たとえば、最初のアプリケーションはステートレスになり、別のアプリケーションは最初のアプリケーションストレージを管理します。変種として、あなたは1つのボリュームのみで、すべての新しいディレクトリを作成することができます。

-v ./app_state:/app_state 

次app_stateディレクトリ構造と

app_state 
|__ subvolume_1 
|__ subvolume_2 
| 
. 
. 
. 
|__ subvolume_n 
+0

あなたのソリューションは最高であることが判明しました –

0

コマンドが長すぎて端末に入力できなくなった場合は、ドッカーの作成またはカスタムスクリプトを使用できます。その後、コンテナを起動するたびに、すべてのものを書き換えることなく、必要な数のボリュームをマウントできます。

+0

ボリュームが、私は既存のマウントに新しいマウントを追加する必要がありますたびに、静的ではありません。 –

+0

私に例を挙げてもらえますか? – Delaballe

+0

私はあなたの必要性に合っているとは思っていませんが、https://clusterhq.comをご覧ください。 – Delaballe

0

[OK]を、ので、私はどこかに、データベース内のWebアプリケーションストアリストを想定ファイルシステムに格納されているパスとの関係を示しています。 Webアプリケーションのソースを変更できる場合は、プロジェクトパスをマップするファイルを作成するプロシージャを追加できます。そして、あなたのコンテナを起動するスクリプトを作成し、そのファイル内の各プロジェクトを(awkで解析して)マウントします。 Webアプリケーションを変更できない場合は、少なくともデータベースのプロジェクトリストにアクセスし、コンテナの実行中のスクリプトで構文解析プロセスを直接行うことができると確信しています

ウェブアプリケーションでは次のようなファイルが作成されます:

Project1 /opt/project1 
Project2 /opt/project2 

とあなたコンテナの実行中のスクリプトもののように見える:

#!/bin/bash 

VOLUMES=$(cat projects.txt | awk '{print "-v " $2":/home/"$1}') 
COMMAND=$(docker run $VOLUMES myimage) 
+0

私はより洗練されたソリューションを探していましたが、うまくいきます。 –

関連する問題