ฉันกำลังพยายามหาสาเหตุที่ทำให้เกิด 502
ฉันมีแอปพลิเคชั่นง่าย ๆ ที่มีสองคอนเทนเนอร์:
เว็บ
- เรียกใช้ nginx พร้อมพรอกซีไปยังแอป: แอป fastcgi_pass:9000;
แอป
- เรียกใช้ php-fpm ฉันไม่แน่ใจว่าฉันจะส่งคำขอจากเว็บได้อย่างไร แต่บนแอป/ในเครื่องถ้าฉันเรียกใช้ php ช่างฝีมือขึ้น
ฉันได้รับคำตอบจาก สมัครได้แล้ว
ฉันยังสามารถ ping แอป
จาก เว็บ
apt-get update && apt-get install iputils-ping -y && แอป ping
ถ้าฉันพยายามไปที่ artery.local ในเบราว์เซอร์ ฉันเห็น เว็บ
ในบันทึกนักเทียบท่าเขียน
เว็บ | 29/11/2021 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
working_dir: /var/www
container_name: แอป
ปริมาณ:
- ../:/var/www
#พอร์ต:
# - 9000:9000
สิ่งแวดล้อม:
- COMPOSER_MEMORY_LIMIT=-1
เครือข่าย:
- แอพเครือข่าย
# เว็บเซิร์ฟเวอร์
เว็บ:
สร้าง:
บริบท: ./
ไฟล์นักเทียบท่า: ./web.dockerfile
container_name: เว็บ
working_dir: /var/www
ปริมาณ:
- ../:/var/www
พอร์ต:
- 80:80
เครือข่าย:
- แอพเครือข่าย
#นักเทียบท่าเครือข่าย
เครือข่าย:
แอปเครือข่าย:
คนขับ: สะพาน
app-dev.dockerfile
จาก php:7.4-fpm
ชุด RUN -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 \
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 กราฟวิซ
RUN นักเทียบท่า-php-ext-install pcntl
ซ็อกเก็ต RUN docker-php-ext-install
เรียกใช้ apt-get install git -y
รัน apt-get install libpcre++-dev -y
RUN pecl ติดตั้ง oauth
RUN docker-php-ext-enable oauth
#mysql & gd
ชุด RUN -eux; \
# ติดตั้งส่วนขยาย PHP pdo_mysql
นักเทียบท่า-php-ext-install pdo_mysql; \
# ติดตั้งไลบรารี PHP gd
นักเทียบท่า-php-ext-configure gd \
--คำนำหน้า=/usr \
--กับ jpeg \
--กับ-webp \
--กับประเภทอิสระ; \
นักเทียบท่า-php-ext-install gd; \
php -r 'var_dump(gd_info());'
RUN apt-get update \
&& apt-get install -y libzip-dev \
&& นักเทียบท่า-php-ext-install zip
#ขด
เรียกใช้ 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 พิมพ์f "\n" | pecl ติดตั้ง imagick
RUN docker-php-ext-enable imagick
RUN ลูกแพร์ติดตั้ง PHP_CodeSniffer
# ส่วนขยาย PHP REDIS
RUN พิมพ์f "\n" | pecl ติดตั้ง -o -f redis \
&& rm -rf /tmp/แพร์ \
&& นักเทียบท่า-php-ext-เปิดใช้งาน redis
# ติดตั้ง XDebug
RUN pecl ติดตั้ง 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/
รัน apt-get update && apt-get install iputils-ping -y
#รับแต่งเพลง
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=ผู้แต่ง
เปิดเผย 9000
CMD ["php-fpm"]
เว็บ.dockerfile
จาก nginx: ล่าสุด
เพิ่ม vhost.conf /etc/nginx/conf.d/default.conf
# ส่งต่อคำขอและบันทึกข้อผิดพลาดไปยังตัวรวบรวมบันทึกนักเทียบท่า
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 = ไดนามิก
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;
server_name artery.local;
รูท /var/www/public;
# หลีกเลี่ยงข้อผิดพลาด 413 เมื่ออัปโหลดไฟล์ที่มีขนาดไม่เกิน 5M
client_max_body_size 10M;
add_header X-Frame-ตัวเลือก "SAMEORIGIN";
add_header X-XSS-การป้องกัน "1; mode=block";
add_header X-Content-Type-Options "nosniff";
ดัชนี index.html index.htm index.php;
ชุดอักขระ utf-8;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?$query_string;
}
สถานที่ = /favicon.ico { access_log off; ปิด log_not_found; }
ตำแหน่ง = /robots.txt { access_log off; ปิด log_not_found; }
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
error_page 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;
}
สถานที่ ~ /\.(?!เป็นที่รู้จัก).* {
ปฏิเสธทั้งหมด
}
}