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

Введение в MySQL для PHP в Docker

Сценарию нужна база рядом, а не установка сервера в систему. В compose сервер поднимают отдельным сервисом на образе mysql:9.7, а PHP ходит к нему по внутреннему имени в сети проекта. Порт MySQL наружу обычно не публикуют: доступ нужен только соседним контейнерам.

Файлы базы держат в томе, смонтированном в /var/lib/mysql, чтобы пересоздание контейнера не стирало таблицы. На пустом томе образ сам заводит базу приложения и пользователя с паролем из переменных окружения, отдельно от учётки root.

Чистый php:8.5-fpm не умеет говорить с MySQL, пока в образ не добавят расширение pdo_mysql через docker-php-ext-install в Dockerfile. Без этого шага даже правильный адрес сервера не откроет соединение PDO.

Имя хоста, базы, пользователя и пароль передают сценарию переменными окружения у сервиса PHP, например DB_HOST и DB_PASSWORD, чтобы не прошивать секреты в код на диске. Страница сначала может лишь показать имя сервера, а затем выполнить запрос и вывести строку из таблицы.

Старт контейнера MySQL и готовность принимать запросы - не одно и то же. Простой порядок запуска лишь ставит PHP после процесса базы, но не ждёт ответа на ping. Проверка здоровья и условие service_healthy откладывают сайт, пока сервер не ответит.

Уроки идут от сервиса и тома данных до расширения, переменных, запроса из index.php и ожидания готовности. Связка nginx на 8080 и FPM без наружного порта остаётся как в разделе про веб-сервер.

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