РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcPhNgInr 7 of 30 menu
◀ ▶

Введение в связку Nginx и PHP в Docker

Встроенный сервер удобен для одной страницы и не годится, когда статику и сценарии разносят по двум программам. HTML и картинки отдаёт один процесс, а файлы .php считает другой, и оба должны видеть одну папку на диске контейнера.

Nginx принимает запрос браузера и отдаёт готовые файлы сам. Для сценария он не запускает интерпретатор внутри себя, а передаёт путь к файлу по протоколу FastCGI службе PHP-FPM. Образ php:8.5-fpm держит только процесс PHP, который слушает порт 9000 внутри сети compose и наружу его не публикуют.

Общая папка сайта монтируется в оба контейнера под одним путём, обычно /var/www/html. Корень в конфиге nginx и том у сервиса PHP должны совпадать буква в букву, иначе веб-сервер ищет файл не там, где его видит интерпретатор.

Стандартный виртуальный хост в образе nginx не знает, куда слать .php. Свой файл default.conf заменяет встроенный сайт и задаёт root, fastcgi_pass и параметр SCRIPT_FILENAME из document_root. Порт сайта на компьютере чаще всего 8080, а внутри nginx слушают 80.

Расширения PHP, например для точной арифметики, добавляют в Dockerfile при сборке образа, а не флагом при каждом запуске. Composer попадает в образ отдельной программой, а каталог vendor появляется после composer install на этапе сборки. Образ php:8.5-apache в этом разделе не используем.

Уроки идут от статики и проверки FPM до полной связки, общей папки, конфига nginx, расширения и зависимостей. MySQL и другие базы здесь не подключаем - достаточно строки hello на странице в браузере.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить