Настройка docker с сервером php7.1, laravel и nginx, получение исключения Bad Gateway 502 - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь настроить php7.1, nginx и laravel 5.5.Я получаю сообщение об ошибке 502 при подключении к серверу.

docker-compose.yml

version: '3'
services:
    # The Application 
    web:
        image: virajkaulkar/laravel-web
        ports:
            - "8080:80"
        volumes:
            -  /var/www
        links:
            - php

    # The Application
    php:
      image: virajkaulkar/laravel-app
      volumes:
          - /var/www
      env_file: '.env'
      environment:
          - HOST=127.0.0.1
          - PORT=8080

vhost.conf

upstream phpserver {
    server php:9000;
}

server {
   listen 80;
   listen [::]:80 default ipv6only=on; 
   server_name  localhost;
   root /var/www/public;
   index  index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;        
    }

   #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

   location ~ \.php$ {
       fastcgi_pass phpserver;
       fastcgi_index  index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
       fastcgi_buffers 256 128k;
       fastcgi_connect_timeout 300s;
       fastcgi_send_timeout 300s;
       fastcgi_read_timeout 300s;
       include fastcgi_params;
    }
}

При запуске docker-compose.yml мой сервер laravel запускается на localhost: 8080, веб-сервер также запускается.Но в веб-браузере он дает исключение плохого шлюза:

ошибка connect () (111: соединение отклонено) при подключении к восходящему потоку, клиент: 172.22.0.1, сервер: localhost, запрос: «GET / HTTP/1.1 ", upstream:" fastcgi: //172.22.0.2: 9000 ", хост:" localhost: 8080 "-

1 Ответ

0 голосов
/ 27 августа 2018

Во-первых, вы используете стандартный докер или рой?Форматы версии 3.x предназначены для роя докеров.
Я не подозреваю, что это проблема с запуском и подключением к контейнеру FPM.

Кажется, я не могу найти virajkaulkar/laravel-appизображение в Docker Hub, поэтому я подозреваю, что это локальный или частный образ хранилища (?), в этом случае, вам следует сначала подтвердить, что он на самом деле использует PHP-FPM, а не какую-то другую версию php.

Поскольку в connection с fpm-сервером возникает проблема, убедитесь, что контейнер работает должным образом и что он не вышел из строя на этапе запуска, если все нормально, я бы запустилс попыткой удалить некоторые из параметров fastcgi и посмотреть, не создает ли какой-либо из них проблемы в соединении.

Например, у вас есть два SCRIPT_FILENAME параметра в области действия ~\.php$, начните с удаления одного из них(тот, который не соответствует файлу индекса контейнеров fpm), пока все не будет работать так, как вы хотите, удалите параметры оптимизации и добавьте их заново, когда это произойдет.

   fastcgi_pass phpserver;
   fastcgi_index  index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   # fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
   # fastcgi_buffers 256 128k;
   # fastcgi_connect_timeout 300s;
   # fastcgi_send_timeout 300s;
   # fastcgi_read_timeout 300s;
   include fastcgi_params;

Если это не поможет, я бы порекомендовал провести тестирование с другим контейнером FPM, просто чтобы убедиться, что он действительно работает, привязать локальный каталог (тот, что с проектом) к контейнеру Docker и посмотреть,вы можете добраться до него, и если вы можете, вероятно, у контейнера есть некоторые проблемы.

...