Введение в разработку PHP в Docker
Готовый образ неудобен, когда строку в сценарии меняют каждую минуту. Сборка тянет время, а правка на диске ждёт сразу после сохранения. Раздел про повседневную работу рядом с контейнерами, а не про один раз собранный шаблон.
Папку проекта на хосте
монтируют в /var/www/html
и у nginx, и у php:8.5-fpm.
Файл site/index.php
меняют в редакторе,
страница на 8080
обновляется без нового образа.
Порт FPM снаружи
не публикуют -
браузер ходит только
к веб-серверу.
Каталог vendor
держат анонимным томом
на /var/www/html/vendor
у сервиса PHP.
Иначе пустая папка с хоста
затирает зависимости,
которые composer install
положил в образ.
Том кода и том
для vendor
работают вместе.
Переменные PHP передают
значение в getenv
без правки файла на диске.
Строка в environment
у службы app
меняет ответ при подъёме
проекта, если сценарий
уже читает имя переменной.
Логи PHP - текст
из error_log
и сообщений интерпретатора
в фоне.
Логи Nginx - строки
о запросах к сайту;
их пишет веб-сервер,
а не PHP.
Обе журнала читают
через docker compose logs
по имени службы.
Пересборка образа нужна,
когда меняют Dockerfile,
а не текст сценария
на смонтированном томе.
Флаг --build
у подъёма заново
прогоняет шаги сборки.
Уроки раздела разбирают
каждый приём отдельно
на связке nginx и FPM
и ответе hello
на localhost:8080.