Почему Apache не может общаться с php-fpm в отдельных контейнерах с помощью Docker для Windows?

надеюсь, ты сможешь помочь.

Я использую последний стабильный Docker для Windows на Windows 10.

Я написал файл docker-compose (см. Ниже), который создает отдельные контейнеры на основе Centos 6 с SCL, один для httpd24-httpd (Apache) и один для rh-php56-php-fpm (PHP-FPM). Контейнеры запускаются нормально, службы сообщают о статусе OK. Если я пингую контейнер от другого, это решает это прекрасно. Если я захожу на страницу 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 (это phpfpm ip из docker), однако 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, но я также пытался ::: 9000

Во время сборки в файле development.php.docker я добавил:

EXPOSE 9000

и, как вы можете видеть в файле compose, httpd связан с phpfpm, поэтому, по моим расчетам, они должны иметь полное знание друг о друге, а apache должен иметь возможность достигать phpfpm: 9000

Может кто-нибудь, пожалуйста, помогите мне разобраться, почему это не работает ?? Это сводит меня с толку. Большое большое спасибо.

докер-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>

ОБНОВИТЬ
Проблема была с файлом конфигурации PHP-FPM. Я не осознавал этого, но rh-php56-php-fpm из SCL создавал 2 директории conf-файлов. Я изменял /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

Я должен был прояснить полные пути к файлам в вопросе!

Я тоже убрал listen.allowed_clients = httpd как это было причиной сломанной трубы AH01074 Apache ошибка. Использование IP контейнера было хорошо, но я не хочу идти по этому пути. В любом случае не важно.

0

Решение

Проблема решена.

Все конфигурации были правильными, но я изменял неправильный файл www.conf. rh-php56-php-fpm создал 2 каталога файлов conf. Я модифицировал /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 который был использован сервисом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]