Я пытаюсь выяснить, что вызывает 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;
}
расположение ~ /\.(?!известно).* {
отрицать все;
}
}