2017-07-18 22 views
0

ちょうど始めて、私はthisを見ました。しかし、彼はbuildを使用しており、imageを使用しています。別のドッカーコンテナにnginxがある静的ファイルを提供する

私は以前に自分のサーバーに作成したイメージをプルするドッカー作成ファイルを持っています。

app: 
    restart: always 
    image: some-app-image:latest 

nginxの設定ファイル

location /static/ { 
    root /data/app/web_interface; <--- this exists in some-app-image container 
} 

通常、私は静的ファイルが含まれているアプリの画像上にマウントされたボリュームを持っているでしょう。

しかし、これは、アプリケーションコンテナ自体に静的ファイルが存在するため、冗長になっています。

nginxのすべてのコンテナは、アプリケーションコンテナに「ピア」して、これらの静的ファイルを提供する必要があります。同様:

location /static/ { 
    root http://app:8000/web_interface; 
} 

または

location /static/ { 
    root app/web_interface; 
} 

万が一nginxのコンテナから別のコンテナにある静的ファイルを提供する方法はありますか?

+0

コンテナの設定が少し不明です。あなたは、 'app'コンテナ(仮想ホスト)からデータを提供しているリバースプロキシとして働いているnginxコンテナを持っていますか? 'app'コンテナがそれ自身の静的ファイルを提供できないのはなぜですか? – Grimmy

+0

私はgunginのサーバーがそれらを処理することを望んでいないので、私は静的ファイルを提供するnginxを持っています。 https://stackoverflow.com/a/13947418/5779280 –

+0

アプリのコンテナはgunicornを実行し、nginxのコンテナはuwsgi_passを使用していますか? – Grimmy

答えて

1

私が過去に持っていたすべてのアイデア:あなたはアプリのDockefileでボリュームを作るとき、コンテナstaticfilesにコピーすることができ

をnginxのために

アプリからドッカボリュームを共有で走るその後、volumes_fromを使用してnginxの容器とボリュームを共有します。これは一種の醜いですし、あなたのアプリdepends_on nginxの場合はまったく動作しません。私はこれはと言うでしょうが、あなたのアプリケーションコンテナをスケールアップするときにはひどく動作するので、間違いなくとなります。

また、静的ファイルをホストからnginxコンテナにマッピングするという考えも最適ではありません。あなたはそれらに対処するために特別な奇妙なステップがあります。

別々の静的コンテナ

は異なるバーチャルホスト上のみで静的ファイルを提供する別のnginxのコンテナを構築します。 static.foo.bar

使用CDN

がそこにあなたがあなたのstaticfilesを置くことができるのCDNのトンがあり、ほとんどのフレームワークはそれを処理するためのプラグインを持っています。私はこれを行ういくつかのプロジェクトを持っています。よく働く。

使用uWSGI

あなたは--static-mapを使用してuWSGIでstaticfilesを提供することができます。 docsを参照してください。これは、安価で簡単なので、私がやったことです...それはスケーリングになるとフレンドリーです。次に、http-socketを使用する必要がありますので、代わりにuWSGIがhttpを話します。

+0

この回答に感謝します。私はCDNオプションが好きですが、かなり早く移行する必要があり、uWSGIソリューションよりセットアップに時間がかかるようです。私はいつもアプリケーションサーバーから静的ファイルを提供することはいいえではないと考えました。私は方法が進化したと思う。 –

+0

私はアプリサーバーから静的ファイルを提供するのは最適ではないと言いたいが、必ずしも悪いとは限らない。迅速に移動する必要がある場合は、それが安全で簡単な方法です。それだけで動作します。 PHPはそれを長年にわたって行ってきました。 – Grimmy

関連する問題