connect () не удалось (111: соединение отклонено) настройка Nginx на PHP 7,4 fpm alpine - PullRequest
0 голосов
/ 09 мая 2020

FROM php: базовый образ 7.4-fpm-alpine, я хочу установить nginx поверх, запустить приложение Laravel и отправить его на Heroku .

Я могу просмотреть простой HTML файл , но не могу запустить простой phpinfo() файл. Я получил ошибку 502, и в журнале я получаю

connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:9876"

Я пытался переключиться на сокет (та же ошибка), поэтому я подумал начать с более простого режима с TCP (я бы действительно использовал сокет, в будущем).

Я попытался также изменить fastcgi_pass на localhost: 9000 или php:9000, как показано в других вопросах SO, но многие другие ответы предназначены для мультикондейнеров. Я хочу (и мне нужно) запустить только один контейнер для отправки в Heroku.

Любая помощь может быть оценена, спасибо.

Это мой Dockerfile

FROM php:7.4-fpm-alpine

# Create missing directory for nginx
RUN mkdir -p /run/nginx

# Configure PHP
COPY .deploy/php/www.conf /usr/local/etc/php-fpm.d/www.conf

RUN apk update && apk add nginx

COPY /app /var/www/app

COPY .deploy/nginx/default.conf /etc/nginx/conf.d/default.conf

CMD sed -i -e 's/$PORT/'"$PORT"'/g' /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'

Это www.conf

[global]
; Log to stderr
error_log = /dev/stderr
[www]
;listen = /var/run/php-fpm/php-fpm.sock
;listen = /socket/php-fpm.sock
listen = 127.0.0.1:9000
; Enable status page
pm.status_path = /fpm-status
pm = ondemand
pm.max_children = 100
pm.process_idle_timeout = 10s;
pm.max_requests = 1000
clear_env = no
catch_workers_output = yes
decorate_workers_output = no
ping.path = /fpm-ping

Ant, это nginx default.conf

server {
  listen $PORT;

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

  location / {
    try_files $uri $uri/ /index.html;
  }

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  location ~ \.php$ {
    try_files       $uri =404;
    #fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include         fastcgi_params;
  }

}

Я собираю его с помощью

docker build --tag ${HEROKU_REGISTRY_IMAGE} --file ./.deploy/app/Dockerfile ".";

и запускаю с

docker run -d --name herodock -e "PORT=9876" -p 9876:9876 ${HEROKU_REGISTRY_IMAGE};
...