Рейтинг:0

Docker — Bad Gateway при попытке проксировать контейнер nginx в контейнер laravel php-fpm

флаг cn

Я пытаюсь выяснить, что вызывает 502.

У меня есть простое приложение с двумя контейнерами:

сеть - запущен nginx с прокси для приложения: fastcgi_pass app:9000;

приложение - запуск php-fpm. Я не уверен, как я могу передавать запросы из Интернета, но в приложении/локально, если я запускаю php ремесленник вверх я получаю ответ от Приложение уже запущено.

я тоже умею пинговать приложение от сеть apt-get update && apt-get install iputils-ping -y && ping app

Если я попытаюсь посетить artery.local в браузере, я увижу сеть в логах докера пиши

сеть | 2021/11/29 21:55:33 [ошибка] 31#31: *9 recv() не удалось (104: Сброс соединения узлом) при чтении заголовка ответа от восходящего потока, клиент: 172.18.0.1, сервер: artery.local, запрос: "GET /admin/home HTTP/1.1", восходящий поток: "fastcgi://172.18.0.2:9000", хост: "artery.local"

Пожалуйста, может кто-нибудь помочь мне пролить свет на это. Я не уверен, что я могу сделать, чтобы проверить, что app/php-fpm правильно прослушивает запросы, переданные web/nginx.

докер-compose.yml

версия: '3'
Сервисы:

  # Приложение
  приложение:
    строить:
      контекст: ./
      файл докеры: ./app-dev.dockerfile
    рабочий_каталог: /var/www
    имя_контейнера: приложение
    тома:
      - ../:/var/www
# порты:
# - 9000:9000
    среда:
      - COMPOSER_MEMORY_LIMIT=-1
    сети:
      - сеть приложений

  # Веб-сервер
  веб:
    строить:
      контекст: ./
      файл докеры: ./web.dockerfile
    имя_контейнера: сеть
    рабочий_каталог: /var/www
    тома:
      - ../:/var/www
    порты:
      - 80:80
    сети:
      - сеть приложений

#Докер Сети
сети:
  сеть приложений:
    водитель: мост

app-dev.dockerfile

ИЗ php:7.4-fpm

ВЫПОЛНИТЬ установить -eux; \
    получить обновление; \
    apt-получить обновление -y; \
    apt-get install -y --no-install-recommends\
            завиток \
            libmemcached-dev \
            libz-dev \
            libpq-dev \
            libjpeg-dev \
            libpng-dev \
            libfreetype6-dev \
            libssl-dev\
            libwebp-dev \
            libmcrypt-dev \
            либониг-дев; \
    rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ libgmp-dev libpng-dev pdftk graphviz
ЗАПУСК docker-php-ext-install pcntl
ЗАПУСК сокетов docker-php-ext-install
ВЫПОЛНИТЬ apt-получить установку git -y
ВЫПОЛНИТЬ apt-получить установку libpcre++-dev -y
ЗАПУСТИТЬ pecl установить oauth
ЗАПУСК docker-php-ext-enable oauth

#mysql и гд 
ВЫПОЛНИТЬ установить -eux; \
    # Установите расширение PHP pdo_mysql
    докер-php-ext-установить pdo_mysql; \
    # Установите gd-библиотеку PHP
    докер-php-ext-настроить gd \
            --prefix=/usr \
            --с-jpeg \
            --with-webp \
            --with-freetype; \
    докер-php-ext-установить gd; \
    php -r 'var_dump(gd_info());'

RUN apt-получить обновление \
     && apt-get install -y libzip-dev \
     && docker-php-ext-install zip

# Завиток
ВЫПОЛНИТЬ apt-получить установку libcurl4-gnutls-dev -y
RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
ВЫПОЛНИТЬ printf "\n" | pecl установить imagick
ЗАПУСК docker-php-ext-enable imagick
ЗАПУСК груши, установка PHP_CodeSniffer

# РАСШИРЕНИЕ PHP REDIS
ВЫПОЛНИТЬ printf "\n" | pecl установить -o -f redis \
    && rm -rf /tmp/груша \
    && docker-php-ext-enable Redis

# Установить XDebug
ЗАПУСК pecl install xdebug && docker-php-ext-enable xdebug
КОПИРОВАТЬ ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

КОПИРОВАТЬ laravel.ini /etc/nginx/conf.d/laravel.conf
КОПИРОВАТЬ ./xlaravel.pool.conf /etc/nginx/conf.d/laravel-pool.conf

КОПИРОВАТЬ laravel.ini /usr/local/etc/php/conf.d
КОПИРОВАТЬ ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/

RUN apt-get update && apt-get install iputils-ping -y

# получить композитор
ЗАПУСК curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

ВЫСТАВИТЬ 9000
CMD ["php-fpm"]

web.dockerfile

ОТ nginx: последняя

ДОБАВИТЬ vhost.conf /etc/nginx/conf.d/default.conf

# пересылать журналы запросов и ошибок в сборщик журналов Docker
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

laravel.pool.conf

пользователь = www-данные
группа = www-данные
слушать = 0.0.0.0:9000
вечера = динамический
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = да
request_terminate_timeout = 600

vhost.conf загружается из файла web.dockerfile

сервер {
    слушать 80;
    слушать [::]:80;

    имя_сервера artery.local;

    корень /var/www/public;

    # избегайте ошибок 413 при загрузке файлов размером до 5M
    client_max_body_size 10M;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-защита "1; режим = блок";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.htm index.php;

    кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }

    журнал_доступа /var/log/nginx/access.log;
    журнал_ошибок /var/log/nginx/error.log;

    страница_ошибки 404 /index.php;

    расположение ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        приложение fastcgi_pass:9000;
        fastcgi_index index.php;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_read_timeout 600;
    }

    расположение ~ /\.(?!известно).* {
        отрицать все;
    }
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.