私はドッカーイメージ内にWebアプリケーションを持っています。 Webアプリケーションは、私が作成するたびに、私は別のdirectory.The問題をマウントする必要が私のアプリ内の新しいコンポーネントは、私はあまりにも多くのマウントを持つコマンドで終わるだろうということです、少し複雑です:ドッカーマウントが多すぎます
docker run -v ... -v ... -v ... ... myimage
ですこのためのよりよい解決策がありますか?
私はドッカーイメージ内にWebアプリケーションを持っています。 Webアプリケーションは、私が作成するたびに、私は別のdirectory.The問題をマウントする必要が私のアプリ内の新しいコンポーネントは、私はあまりにも多くのマウントを持つコマンドで終わるだろうということです、少し複雑です:ドッカーマウントが多すぎます
docker run -v ... -v ... -v ... ... myimage
ですこのためのよりよい解決策がありますか?
ドッキングの主なアイデアは、どこでも同じ結果(ステートレス)で実行できる不変のコンテナを持つことです。あなたのコンテナが状態を持っている場合は、あなたのアプリケーションに適していないアーキテクチャソリューションがあるかもしれません。アプリケーションを2つに分ける必要があります。たとえば、最初のアプリケーションはステートレスになり、別のアプリケーションは最初のアプリケーションストレージを管理します。変種として、あなたは1つのボリュームのみで、すべての新しいディレクトリを作成することができます。
-v ./app_state:/app_state
次app_stateディレクトリ構造と
app_state
|__ subvolume_1
|__ subvolume_2
|
.
.
.
|__ subvolume_n
[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)
私はより洗練されたソリューションを探していましたが、うまくいきます。 –
あなたのソリューションは最高であることが判明しました –