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

Сервис MySQL в Docker

Сервис MySQL поднимает сервер в том же проекте, что и сайт. Контейнер с базой соседствует с web и app в одной сети compose, и PHP сможет обращаться к нему по имени db, когда появится драйвер и настройки в сценарии. Пока страница по-прежнему печатает только текст сценария.

Сервис db берёт образ mysql:9.7 и пароль root demo через MYSQL_ROOT_PASSWORD. Строку ports для MySQL не добавляем: снаружи хоста порт 3306 не нужен учебному сайту. Файл compose.yaml собирает три сервиса:

services: web: image: nginx ports: - "8080:80" volumes: - ./site:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf app: image: php:8.5-fpm volumes: - ./site:/var/www/html db: image: mysql:9.7 environment: MYSQL_ROOT_PASSWORD: demo

Конфиг nginx и сценарий site/index.php как в связке без базы:

server { listen 80; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass app:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Сценарий пока не открывает PDO и печатает слово hello:

<?php echo 'hello';

После фонового подъёма localhost:8080 по-прежнему показывает hello, а процесс MySQL уже слушает соседей по DNS-имени db внутри сети проекта. Запуск:

docker compose up -d

Опишите проект с сервисами front, php и store на mysql:9.7 без публикации порта базы и ответом ok на 8080.

Запишите внутреннее имя сервиса MySQL, по которому к нему обратится PHP из соседнего контейнера.

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