Încerc să aflu ce cauzează un 502.
Am o aplicație simplă cu două containere:
web
- rulează nginx, cu un proxy pentru aplicație: fastcgi_pass app:9000;
aplicația
- rulează php-fpm. Nu sunt sigur cum pot trece solicitări de pe web, dar din aplicație/local dacă rulez php artizan sus
Primesc un răspuns de Aplicația este deja deschisă.
Pot și eu să pun ping aplicația
din web
apt-get update && apt-get install iputils-ping -y && ping app
Dacă încerc să vizitez artery.local într-un browser, pot vedea web
în jurnalele docker scrieți
web | 2021/11/29 21:55:33 [eroare] 31#31: *9 recv() a eșuat (104:
Resetarea conexiunii de către peer) în timp ce citiți antetul răspunsului din amonte,
client: 172.18.0.1, server: artery.local, cerere: „GET /admin/home
HTTP/1.1”, în amonte: „fastcgi://172.18.0.2:9000”, gazdă: „artery.local”
Vă rog, poate cineva să mă ajute să fac ceva lumină în acest sens. Nu sunt sigur ce pot face pentru a testa că aplicația/php-fpm ascultă corect cererile trimise de web/nginx.
docker-compose.yml
versiunea: '3'
Servicii:
# Aplicația
aplicatie:
construi:
context: ./
dockerfile: ./app-dev.dockerfile
work_dir: /var/www
container_name: app
volume:
- ../:/var/www
# porturi:
# - 9000:9000
mediu inconjurator:
- COMPOSER_MEMORY_LIMIT=-1
retele:
- rețea-aplicație
# Un server web
web:
construi:
context: ./
dockerfile: ./web.dockerfile
container_name: web
work_dir: /var/www
volume:
- ../:/var/www
porturi:
- 80:80
retele:
- rețea-aplicație
#Docker Networks
retele:
rețea-aplicație:
şofer: pod
app-dev.dockerfile
DE LA php:7.4-fpm
RUN set -eux; \
apt-get update; \
apt-get upgrade -y; \
apt-get install -y --no-install-recommends \
curl \
libmemcached-dev \
libz-dev \
libpq-dev \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
libssl-dev \
libwebp-dev \
libmcrypt-dev \
libonig-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
RUN docker-php-ext-install pcntl
RUN socket-urile docker-php-ext-install
RUN apt-get install git -y
RUN apt-get install libpcre++-dev -y
RUN pecl install oauth
RUN docker-php-ext-enable oauth
#mysql și gd
RUN set -eux; \
# Instalați extensia PHP pdo_mysql
docker-php-ext-install pdo_mysql; \
# Instalați biblioteca PHP gd
docker-php-ext-configure gd \
--prefix=/usr \
--cu-jpeg \
--cu-webp \
--cu-tip liber; \
docker-php-ext-install gd; \
php -r 'var_dump(gd_info());'
RUN apt-get update \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install zip
# Curl
RUN apt-get install libcurl4-gnutls-dev -y
RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN printf „\n” | pecl instalează imagick
RUN docker-php-ext-enable imagick
RUN pear instala PHP_CodeSniffer
# EXTENSIE PHP REDIS
RUN printf „\n” | pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
# Instalați XDebug
RUN pecl install xdebug && docker-php-ext-enable xdebug
COPIEAZĂ ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
COPIEAZĂ laravel.ini /etc/nginx/conf.d/laravel.conf
COPIEAZĂ ./xlaravel.pool.conf /etc/nginx/conf.d/laravel-pool.conf
COPIEAZĂ laravel.ini /usr/local/etc/php/conf.d
COPIEAZĂ ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/
RUN apt-get update && apt-get install iputils-ping -y
# obține compozitor
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
EXPUNERE 9000
CMD [„php-fpm”]
web.dockerfile
DE LA nginx:latest
ADAUGĂ vhost.conf /etc/nginx/conf.d/default.conf
# redirecționează jurnalele de solicitare și erori către colectorul de jurnal docker
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
laravel.pool.conf
utilizator = www-data
grup = www-data
asculta = 0.0.0.0:9000
pm = dinamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = da
request_terminate_timeout = 600
vhost.conf încărcat din web.dockerfile
Server {
asculta 80;
asculta [::]:80;
nume_server artery.local;
root /var/www/public;
# evitați erorile 413 când încărcați fișiere cu dimensiunea de până la 5M
client_max_body_size 10M;
add_header X-Frame-Options „SAMEORIGIN”;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
set de caractere utf-8;
Locație / {
try_files $uri $uri/ /index.php?$query_string;
}
locație = /favicon.ico { access_log off; log_not_found off; }
locație = /robots.txt { access_log off; log_not_found off; }
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
eroare_page 404 /index.php;
locație ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
aplicația fastcgi_pass:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 600;
}
locație ~ /\.(?!cunoscut).* {
nega totul;
}
}