2016-12-23 53 views
0

あなたが手助けできることを願っています。私はhttpd24ためにSCL、1とCentOSに6に基づいて別々の容器を構築するドッキングウィンドウ-COMPOSEファイル(下記参照)を、書いたDocker for Windowsを使用して別のコンテナでphp-fpmと通信できないのはなぜですか?

のWindows 10上でWindows用の最新の安定ドッカーを実行している

-httpd(Apache)、1つはrh-php56-php-fpm(PHP-FPM)です。 OKステータスを報告するサービスがあれば、コンテナは正常に起動します。コンテナから別のコンテナにpingを実行すると、問題は解決します。私がindex.htmlページにアクセスした場合、Apacheは満足しています。

Apacheは現在proxy:fcgi:phpfpm:9000を使用するように設定されていますが、PHPファイルを読み込もうとすると、Apacheは503エラーを返します。私は、proxy:fcgi:127.0.0.1:9000 - 0.0.0.0:9000 - 172.20.0.3:9000(これはdockerのphpfpm ip)のようないくつかの異なる接続オプションを試しましたが、Apacheはちょうどログに記録しています:

[proxy:error] [pid 60:tid ...] (...)Connection refused: AH00957: FCGI: attempt to connect to 172.20.0.3:9000 (*) failed 
[proxy_fcgi:error] [pid 60:tid ...] [client 172.20.0.1:44546] AH01079: failed to make connection to backend: ... 

私もproxypassmatchで試してみましたが、それでも喜んではいません。

<IfModule proxy_module> 
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1 
</IfModule> 

mod_proxy、mod_proxy_http、mod_proxy_fcgiがApacheによってロードされています。

PHP-FPMも明らかに設定されています。私は一般的に、これは単にポート9000をリッスンするように設定しなければならなかっただけでなく、私が追加したdevelopment.php.dockerfileでビルド中に::: 9000

を試してみました:

EXPOSE 9000 

と、などphpfpmにリンクされているので、phpfpmにアクセスできるはずです:9000

誰も私がなぜこのisn ' t働く?それは私をひねり返します。とても感謝しています。

ドッカー-COMPOSE:

version: '2' 

services: 
    httpd: 
    build: 
     context: . 
     dockerfile: ./docker/development.httpd.Dockerfile 
    environment: 
     - APACHE_RUN_USER=apache 
     - APACHE_RUN_GROUP=apache 
     - APACHE_LOG_DIR=/var/log/httpd24 
     - APACHE_RUN_DIR=/opt/rh/httpd24/root/var/run/httpd 
     - APACHE_LOCK_DIR=/opt/rh/httpd24/root/var/lock 
     - [email protected] 
     - APACHE_SERVERNAME=foo.bar 
     - APACHE_SERVERALIAS="foo.foo.bar www.foo.bar" 
     - APACHE_DOCUMENTROOT=/var/www/html 
    volumes: 
     - ./data/www/html:/var/www/html 
    ports: 
     - "10180:80" 
    tty: true 
    networks: 
     - front-tier 
    phpfpm: 
    build: 
     context: . 
     dockerfile: docker/development.php.Dockerfile 
    environment: 
     - PHPFPM_RUN_USER=apache 
     - PHPFPM_RUN_GROUP=apache 
     - PHPFPM_LISTEN=9000 
     - PHPFPM_PM=dynamic 
     - PHPFPM_PM_MAX_CHILDREN=50 
     - PHPFPM_PM_START_SERVERS=5 
     - PHPFPM_PM_MIN_SPARE_SERVERS=5 
     - PHPFPM_PM_MAX_SPARE_SERVERS=35 
     - PHPFPM_LOG_DIR=/var/log/rh-php56-php-fpm 
    volumes: 
     - ./data/www/html:/var/www/html 
    tty: true 
    networks: 
     - front-tier 
     - back-tier 
    mysql: 
    build: 
     context: . 
     dockerfile: docker/development.mysql.Dockerfile 
    volumes: 
     - ./data/db:/usr/tmp/db/ 
     - mysql:/var/lib/mysql 
    expose: 
     - 3306 
    ports: 
     - "10133:3306" 
    tty: true 
    networks: 
     - back-tier 
volumes: 
    mysql: 
networks: 
    front-tier: 
    driver: bridge 
    back-tier: 
    driver: bridge 

www.conf

[...] 
user = apache 
group = apache 
listen = 9000 
listen.allowed_clients = httpd 
[...] 

00 custom.conf

[...] 
<VirtualHost *:80> 
[...] 
     <Directory "/var/www/html"> 
      Options -Indexes +FollowSymlinks +MultiViews 
      AllowOverride All 
      Require all granted 
     </Directory> 
     <FilesMatch \.php$> 
       SetHandler "proxy:fcgi://php:9000" 
     </FilesMatch> 
[...] 
</VirtualHost> 

UPDATE 問題はPHP-FPM構成ファイルで発生していました。私はそれを認識しませんでしたが、SCLのrh-php56-php-fpmはconfファイルの2つのディレクトリを作成していました。私は/opt/rh/rh-php56/register.content/etc/opt/rh/rh-php56/php-fpm.d/www.confを変更していましたが、サービスは/ etc/opt/rh/rh-php56を使っていました/php-fpm.d/www.conf

私は質問で完全なファイルパスを明確にすべきでした!

また、壊れたパイプAH01074 Apacheエラーを引き起こしていたので、listen.allowed_clients = httpdも削除しました。コンテナIPを使用しても問題ありませんでしたが、私はそのルートを控えていません。いずれにしても重要ではない。

+0

彼らは、それはあなたのネットワークの設定である必要がありますすることができます。 – Devon

+0

ありがとう@Devon私は彼らができるはずだと思った。私はそれを解決するときに私は更新されます。乾杯 – iomdesign

答えて

0

問題を解決しました。

構成はすべて正しかったが、私は間違っwww.confファイルを修正しました。 rh-php56-php-fpmはconfファイルの2つのディレクトリを作成しました。私は/opt/rh/rh-php56/register.content/etc/opt/rh/rh-php56/php-fpm.d/www.confの代わりを修正したの/ etcは/ opt/RH/RH-php56 /php-fpm.d/www.confサービスで使用しました。

関連する問題