php-fpm Сброс соединения одноранговым узлом

Я пытаюсь настроить php-fpm на образ Docker.

Вот сервис в моем docker-compose.yml:

wordpress-service:
  build:
    context: .
    dockerfile: Dockerfile-wordpress
  image: riffsy-web-wordpress:latest
  restart: always
  links:
   - wordpress-mysql
  depends_on:
   - wordpress-mysql
  expose:
    - "8000"
  environment:
   - DB_NAME=wordpress
   - DB_USER=wordpress
   - DB_PASSWORD=password123
   - DB_HOST=wordpress-mysql
   - DB_PORT=3306
  ports:
   - "8000:8000"

Образ Docker использует эту команду:

CMD php-fpm7.0 --fpm-config /etc/php-fpm.conf

Вот моя конфигурация php-fpm:

[global]

error_log = /dev/stderr
log_level = debug
daemonize = no

[www]
listen = 8000
listen.allowed_clients = 127.0.0.1
user = www-data
group = www-data
pm = dynamic
pm.max_children = 6
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 4
pm.max_requests = 500
request_terminate_timeout = 120s
catch_workers_output = yes

Я установил listen.allowed_clients = 127.0.0.1, потому что в противном случае я получал сообщения об отказе в соединении; в конечном итоге мне понадобится php-fpm, чтобы принимать соединения с любого IP-адреса, потому что я не знаю, какой IP-адрес будет у моего образа Nginx, и это не имеет значения, поскольку мой образ php-fpm не будет публично подключен к Интернету. .

Я запустил docker exec, чтобы войти в работающий образ, и запустил wget, чтобы проверить сервер:

root@428d78fd58df:/srv# wget 127.0.0.1:8000                           
--2016-09-12 07:55:13--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

--2016-09-12 07:55:14--  (try: 2)  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

--2016-09-12 07:55:16--  (try: 3)  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

^C

Консоль не выводит ничего, кроме:

wordpress-service_1  | [12-Sep-2016 08:01:09.757039] DEBUG: pid 5, fpm_pctl_perform_idle_server_maintenance(), line 379: [pool www] currently 0 active children, 2 spare children, 2 running children. Spawning rate 1

person Seán Hayes    schedule 12.09.2016    source источник
comment
Проблема в том, что listen.allowed_clients = 127.0.0.1 необходимо настроить так, чтобы любой IP-адрес мог подключаться к нему. В документации сказано, что если он пуст, он будет принимать все соединения. Это НЕ похоже на среду докеров. Я пробовал закомментировать эту строку, и установка listen.allowed_clients = у меня не работала. Он будет принимать соединения только с указанными вами IP-адресами. Кого вы не узнаете, пока контейнер не запустится.   -  person b01    schedule 01.12.2017


Ответы (1)


Проблема в том, что php-fpm не использует протокол http, а использует fastcgi. Единственный способ подключиться к нему - настроить Nginx на использование fastcgi.

person Seán Hayes    schedule 13.09.2016