2017-09-19 28 views
0

同様の質問が何度も尋ねられましたが、私はそれらのほとんどを見てきましたが、まだ私は問題を解決できません。apache 2ドッカーのコンテナからphp7 fpmドッカーのコンテナに接続できません。

私はApache2とPHP 7 FPMを異なるドッカーコンテナで実行していますが、それらは互いに接続できません。 次のエラーで接続が失敗します。以下は

[Tue Sep 19 00:05:51.743322 2017] [proxy:debug] [pid 336:tid 140441754191616] proxy_util.c(2422): [client 172.18.0.1:36332] AH00947: connected /var/www/html/info.php to 127.0.0.1:9000 
[Tue Sep 19 00:05:51.743387 2017] [proxy:error] [pid 336:tid 140441754191616] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed 
[Tue Sep 19 00:05:51.743405 2017] [proxy_fcgi:error] [pid 336:tid 140441754191616] [client 172.18.0.1:36332] AH01079: failed to make connection to backend: 127.0.0.1 
[Tue Sep 19 00:05:51.743410 2017] [proxy:debug] [pid 336:tid 140441754191616] proxy_util.c(2175): AH00943: FCGI: has released connection for (*) 
[Tue Sep 19 00:05:56.809604 2017] [authz_core:debug] [pid 336:tid 140441672480512] mod_authz_core.c(809): [client 172.18.0.1:36442] AH01626: authorization result of Require all granted: granted 
[Tue Sep 19 00:05:56.809646 2017] [authz_core:debug] [pid 336:tid 140441672480512] mod_authz_core.c(809): [client 172.18.0.1:36442] AH01626: authorization result of <RequireAny>: granted 
[Tue Sep 19 00:05:56.809676 2017] [proxy:debug] [pid 336:tid 140441672480512] mod_proxy.c(1160): [client 172.18.0.1:36442] AH01143: Running scheme fcgi handler (attempt 0) 
[Tue Sep 19 00:05:56.809687 2017] [proxy_fcgi:debug] [pid 336:tid 140441672480512] mod_proxy_fcgi.c(879): [client 172.18.0.1:36442] AH01076: url: fcgi://127.0.0.1:9000/var/www/html/info.php proxyname: (null) proxyport: 0 
[Tue Sep 19 00:05:56.809694 2017] [proxy_fcgi:debug] [pid 336:tid 140441672480512] mod_proxy_fcgi.c(886): [client 172.18.0.1:36442] AH01078: serving URL fcgi://127.0.0.1:9000/var/www/html/info.php 
[Tue Sep 19 00:05:56.809703 2017] [proxy:debug] [pid 336:tid 140441672480512] proxy_util.c(2160): AH00942: FCGI: has acquired connection for (*) 
[Tue Sep 19 00:05:56.809712 2017] [proxy:debug] [pid 336:tid 140441672480512] proxy_util.c(2213): [client 172.18.0.1:36442] AH00944: connecting fcgi://127.0.0.1:9000/var/www/html/info.php to 127.0.0.1:9000 
[Tue Sep 19 00:05:56.809840 2017] [proxy:debug] [pid 336:tid 140441672480512] proxy_util.c(2422): [client 172.18.0.1:36442] AH00947: connected /var/www/html/info.php to 127.0.0.1:9000 
[Tue Sep 19 00:05:56.809927 2017] [proxy:error] [pid 336:tid 140441672480512] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed 
[Tue Sep 19 00:05:56.809946 2017] [proxy_fcgi:error] [pid 336:tid 140441672480512] [client 172.18.0.1:36442] AH01079: failed to make connection to backend: 127.0.0.1 
[Tue Sep 19 00:05:56.809953 2017] [proxy:debug] [pid 336:tid 140441672480512] proxy_util.c(2175): AH00943: FCGI: has released connection for (*) 

私のドッキングウィンドウ・コンファイル以下

version: '2' 
services: 
    php: 
     build: ./etc/php/ 
     volumes: 
      - ./etc/php/config/php.ini:/etc/php/7.1/fpm/php.ini 
      - ./etc/php/config/www.conf:/etc/php/7.1/fpm/pool.d/www.conf 
      - ./etc/php/config/php-fpm.conf:/etc/php/7.1/fpm/php-fpm.conf 
      - ./etc/php/logs/php-fpm.log:/var/log/php-fpm.log 
      - ./etc/php/logs/fpm-php.www.log:/var/log/fpm-php.www.log 
      - ./source/:/var/www/html/ 
     expose: 
      - 9000 
     ports: 
      - "9000:9000" 
     links: 
      - mysql 

    apache2: 
     build: ./etc/apache/ 
     volumes: 
      - ./source/:/var/www/html/ 
      - ./etc/apache/config/sites-enabled/:/etc/apache2/sites-enabled/ 
      - ./etc/apache/config/conf-enabled/:/etc/apache2/conf-enabled/ 
      - ./etc/apache/logs/error.log:/var/log/apache2/error.log 
      - ./etc/apache/logs/access.log:/var/log/apache2/access.log 
      - ./etc/apache/logs/sm-error.log:/var/log/apache2/sm-error.log 
      - ./etc/apache/logs/sm-access.log:/var/log/apache2/sm-access.log 
     expose: 
      - 80 
      - 443 
     ports: 
      - "8080:80" 
      - "443:443" 
     links: 
      - php 

    mysql: 
     image: mysql:latest 
     volumes: 
      - ./etc/mysql/data/:/var/lib/mysql/ 
      - ./etc/mysql/config/:/etc/mysql/conf.d/ 
     ports: 
      - "3307:3306" 
     environment: 
      MYSQL_ROOT_PASSWORD: root 
      MYSQL_DATABASE: sp 
      MYSQL_USER: spadmin 
      MYSQL_PASSWORD: root 

    phpmyadmin: 
     image: phpmyadmin/phpmyadmin 
     ports: 
      - "8081:80" 
     links: 
      - mysql 
     environment: 
      PMA_HOST: mysql 

はapache2のための私のドッキングウィンドウのファイルです。以下は

#Get the base image 
FROM ubuntu:16.04 

#Install Apache 
RUN apt-get update && \ 
    apt-get dist-upgrade -y && \ 
    apt-get install -y \ 
     apache2 \ 
     apache2-utils 

# Enable modules 
RUN a2enmod rewrite 
RUN a2enmod proxy 
RUN a2enmod proxy_fcgi 

# Add user to www-data 
RUN groupadd 1000 
RUN usermod -a -G 1000 www-data 
RUN usermod -a -G staff www-data 

RUN service apache2 restart 

# Run config 
ENTRYPOINT [ "/usr/sbin/apache2ctl" ] 
CMD [ "-D", "FOREGROUND" ] 

apache2のための私の仮想ホストファイルです。以下は

<VirtualHost *:80> 
    ServerName localhost 

    <FilesMatch \.php$> 
     SetHandler "proxy:fcgi://127.0.0.1:9000" 
    </FilesMatch> 

    DocumentRoot /var/www/html 
    <Directory /var/www/html> 
     Options FollowSymlinks 
     AllowOverride All 
     Require all granted 
    </Directory> 

    ErrorLog /var/log/apache2/sm-error.log 
    CustomLog /var/log/apache2/sm-access.log combined 
</VirtualHost> 

私のPHP-FPMドッカファイルです。

FROM ubuntu:16.04 

# Install PHP 
RUN apt-get clean && \ 
    apt-get -y update && \ 
    apt-get install -y locales \ 
    curl \ 
    software-properties-common \ 
    git && \ 
    locale-gen en_AU.UTF-8 
RUN LC_ALL=en_AU.UTF-8 add-apt-repository ppa:ondrej/php 
RUN apt-get update 
RUN apt-get install -y --force-yes php7.1-bcmath \ 
       php7.1-bz2 \ 
       php7.1-cli \ 
       php7.1-common \ 
       php7.1-curl \ 
       php7.1-cgi \ 
       php7.1-dev \ 
       php7.1-fpm \ 
       php7.1-gd \ 
       php-ldap \ 
       php7.1-gmp \ 
       php7.1-intl \ 
       php7.1-json \ 
       php7.1-mbstring \ 
       php7.1-mcrypt \ 
       php7.1-mysql \ 
       php-sqlite3 \ 
       php7.1-opcache \ 
       php7.1-phpdbg \ 
       hp7.1-pspell \ 
       php7.1-readline \ 
       php7.1-recode \ 
       php7.1-soap \ 
       php7.1-tidy \ 
       php7.1-xml \ 
       php7.1-xmlrpc \ 
       php7.1-xsl \ 
       php7.1-zip \ 
       php-xdebug 

# Install Composer 
RUN curl https://getcomposer.org/installer > composer-setup.php && php composer-setup.php && mv composer.phar /usr/local/bin/composer && rm composer-setup.php 

# Clean files 
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

# Run PHP-FPM 
CMD ["php-fpm7.1"] 

以下は、docker psコマンドの出力です。

a85830192ad4  spendingmanager_apache2 "/usr/sbin/apache2..." 15 minutes ago  Up 15 minutes  0.0.0.0:443->443/tcp, 0.0.0.0:8080->80/tcp spendingmanager_apache2_1 
4574c977d0d4  phpmyadmin/phpmyadmin  "/run.sh phpmyadmin"  15 minutes ago  Up 15 minutes  0.0.0.0:8081->80/tcp       spendingmanager_phpmyadmin_1 
82735fa580e8  spendingmanager_php  "php-fpm7.1"    15 minutes ago  Up 15 minutes  0.0.0.0:9000->9000/tcp      spendingmanager_php_1 
32422e934247  mysql:latest    "docker-entrypoint..." 15 minutes ago  Up 15 minutes  0.0.0.0:3307->3306/tcp      spendingmanager_mysql_1 

注:PHP-FPMは、ポート9000で接続をリスニングし、その正常に動作しています。ホストOSからアクセスしようとすると(http://localhost:8080の代わりにhttp://localhost/など)、接続して目的の出力を得ることができます。

また、www/htmlにアクセス許可を設定して、www-dataを所有者にしてみました。

誰か助けてもらえますか?

ご協力いただきありがとうございます。

+0

'でSetHandler "プロキシ:FCGI://127.0.0.1:9000"' 'であるべきでSetHandler "プロキシ:FCGI:// PHP:9000"' 。 Btwでは、phpとapacheのコンテナがリンクされているため、ホストにfpmポートをバインドする必要はありません。 –

答えて

2

例では、localhostまたは127.0.0.1は、ホスト(ホストではない)にローカルです。したがって、Apacheが127.0.0.1:9000でFPMに接続しようとすると、実際にはApacheコンテナのみに接続しようとしています。

あなたがしたいことは、ApacheをFPMコンテナに接続させることです。 Dockerネットワークでこれを行う最も簡単な方法は、Docker Composeのサービス名を使用することです。あなたのケースでは、サービス名はphpで、ApacheコンテナのDNS名phpで利用できます。

このように、あなたのApacheの設定は次のようになります。

SetHandler "proxy:fcgi://php:9000" 
+0

@ Andy-shinさん、ありがとうございました。私はこれを数日間見ていました。ご助力ありがとうございます。 –

関連する問題