Puncte:0

Docker - Gateway greșit când încercați să transferați containerul nginx către containerul laravel php-fpm

drapel cn

Î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;
    }
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.