2016-07-13 26 views
3

私はドッカーで作業を始め、https://codeable.io/wordpress-developers-intro-dockerのような実例を作りました。展開はエフェクターシステム上にあるので、私はドッカーコンテナーのかなり小さいフットプリントが必要です。ドッカーのコンテナ:どのように連携して動作しますか?

しかし、私はこれがどのようにぴったり合っているかについてはわかりません。

2 Dockerfiles、nginxのための1があります。

FROM nginx:1.9-alpine 
COPY nginx.conf /etc/nginx/conf.d/default.conf 

nginx.confは次のように定義されています。他のDockerfuileはPHPのためである

server { 
    server_name _; 
    listen 80 default_server; 

    root /var/www/html; 
    index index.php index.html; 

    access_log /dev/stdout; 
    error_log /dev/stdout info; 

    location/{ 
    try_files $uri $uri/ /index.php?$args; 
    } 

    location ~ .php$ { 
    include fastcgi_params; 
    fastcgi_pass my-php:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 
} 

Dockerfile.php-fpm: 
FROM php:7.0.6-fpm-alpine 
RUN docker-php-ext-install -j$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \ 
    iconv gd mbstring fileinfo curl xmlreader xmlwriter spl ftp mysqli 
VOLUME /var/www/html 

最後にすべてが来るが、一緒にドッカー - compose.yml:

個の
version: '2' 
services: 
    my-nginx: 
    build: . 
    volumes: 
     - .:/var/www/html 
    ports: 
     - "8080:80" 
    links: 
     - my-php 
    my-php: 
    build: 
     context: . 
     dockerfile: Dockerfile.php-fpm 
    volumes: 
     - .:/var/www/html 
    ports: 
     - "9000:9000" 

ドッキングウィンドウコンテナは

$ docker-compose build 
$ docker-compose up 

を使用して起動され、すべてが動作します - それは魔法のようなものです!ここで

は私の質問(の一部)が起こっているのかを理解するために、次のとおりです。

  • はどのようにnginxのコンテナは、PHP-コンテナについて知っていますか?
  • PHPがnginxから呼び出されたとき、どのコンテナでPHPが実行されるのですか ?
  • データはどのようにnginxからPHPに渡され、戻されますか?
  • このドッカーの使い方(単純な Webサーバーアプリケーションの場合は3つのコンテナ)が正しい方法でドッカーを使用していますか? はこれが過度のコンテナですか?
  • 負荷を増やすためにこのドッカーアーキテクチャを拡張するにはどうすればよいですか?プロダクション用に使用できますか?
  • コンテナは、ホスト上で同じボリューム(./)を使用します。 PHPフレームワークをYii2として使用すると、 は、PHPまたはNginxのいずれかのコンテナにボリュームを移動する方が良いでしょうか?

答えて

3
  • nginx-containerは、どのようにphp-containerについて知っていますか? linksの下

あなたがmy-phpコンテナを列挙され、これは、とりわけ、コンテナの名前との間のマッピングを作成し、それが/etc/hostsファイルにIPです。 PHPをnginxのから呼び出される

  • 、そのコンテナ内のPHPプロセスで実行していますか?

あなたが期待するように、任意のコードがphpmy-phpコンテナで実行されますが、これはmy-php:9000上で実行されているphpエンジンへの要求の処理を渡しnginx設定ファイルで定義されています。データはPHPと背中にnginxのから渡される方法

通常のソケット通信とは異なります。どちらのドッカーもアドレスを持っており、ネットワークに接続された他のコンピュータと同様に、互いに通信できます。

  • ドッキングウィンドウを使用するには、正しい方法このドッキングウィンドウの使い方(簡単なWebサーバアプリケーションのための3つのコンテナ)ですか、これは、容器のやり過ぎでしょうか?

ここでは2つのコンテナしか表示されません。コンテナには1つのプロセス(ここでは最小システムを構築しているので)だけを実行する必要があると言う人もいれば、各コンテナがサービスに必要なものを実行する必要があると言う人もいます。 (これはしかし、好みの問題であり、問​​題について異なる意見がある)

  • どのようにこのドッキングウィンドウアーキテクチャは、負荷が増大するためにスケーリングすることができますか?プロダクション用に使用できますか?

はい、プロダクションに使用できます。それは容易にスケールすることができますが、スケールを達成するために負荷のバランスを取るためにいくつかの欠点があります。 (すでに使用中でないインスタンスに新しい要求を送信することができます。これは非常に一般的なツールがHAProxyある。

  • 例えばロードバランサコンテナがホスト上で同じボリューム(./)を使用しますYii2としてPHPフレームワークを使用する場合、それはよりよいPHPやnginxのコンテナのいずれかにボリュームを移動しないのでしょうか?

をPHPコンテナが、この場合、すべての処理を行うと、それは安全でなければなりませんボリュームをマウントするのはmy-phpです。

関連する問題