2016-03-19 30 views
2

私はユーザーがプロファイル写真をアップロードできるようにする必要があるWebアプリケーションを構築しています。私はアプリケーションが自己完結型なので、人々がs3やその他のクラウドストレージサービスアカウントを持っている必要はありません。ドッキングされたWebアプリケーションは、アップロードされたファイルをどこに保存する必要がありますか?

ドッキング用の容器はできるだけ使い捨てにしておくことをお勧めします。ボリュームを作成する必要があります。ですから、ボリュームを自動的に作成したいので、コンテナを実行するときにボリュームを指定する必要はありませんが、dockerfilesのVOLUME命令のドキュメントが混乱します。

VOLUME命令は、指定された名前のマウントポイントを作成し、は、天然の宿主または他の容器から外部にマウントされたボリュームを保持しているとしてマーク。

このようにマークされているとはどういう意味ですか?データはアプリケーションによって書き込まれ、extenrlソースからは得られません。

答えて

2

あなたはdockerfileでボリュームをマークすると、VOLUME /site/uploads言って、それは後に書かれており、それが書き込まれるすべてのデータを新しいコンテナで利用できる/site/uploads--volumes-from <container-name>で別の容器を実行して持っている、それは非常に簡単になります(最初のコンテナがまだ実行中の場合)。

また、最初にコンテナを起動した後で、そのボリュームをdocker volume lsと表示することができます。

コンテナを削除した場合の唯一の問題は、コンテナが作成したボリュームを示すdocker inspect <container-name>によって提供されるマッピングが失われることです。コンテナが実際に作成したボリュームをすばやく正確に表示するには、jqがインストールされている場合はdocker inspect <container-name> | jq '.[].Mounts'を試してください。そうでない場合は、ボリュームが1つしかない場合はdocker inspect <container-name> | grep Mounts -A 10で十分です。ボリュームを作成したコンテナを削除しても

を(あなたもちょうどすべてのJSONを介して自分自身を歩いて渡ることができます)、ボリュームは、あなたがdocker volume rm <volume-name>

注意を実行しない限りdocker volume lsで、あなたのシステム上で閲覧可能なままになります:私は」ドッカーバージョン1.10.3を使用してm

2

問題はありません。画像は問題なくマウントされたファイルシステムにアップロードされます。

アップロードフォルダに自由にアクセス許可を指定して、書き込みできるようにする必要があるかもしれません。

関連する問題