Docker-compose настройка для сайта NGINX + MYSQL + PHP-FPM
Основа статьи взята тут.
У нас есть сайт, который мы хотим быстро перенести на другой сервер. Для этого мы будем использовать docker + docker-compose
Что будет уметь наша сборка?
Простейшая среда разработки на php включает в себя следующие компоненты:
- Собственно сам PHP, последний стабильный релиз 7.4;
- Composer
- Mysql, последняя стабильная версия 8;
- Nginx
Также наша конфигурация будет поддерживать сколько угодно хостов nginx (см. проектов). Добавление новых компонентов в стек обычно не составляет труда, если это не заморская диковина конечно, но об этом позже.
Файловая структура
Переходим к организации папок и файлов нашей сборки. Создадим на диске какую-нибудь директорию, которая будет корневой для нашей сборки и в ней по порядку создаем следующие директории:
- www - в этой папке будут лежать файлы наших проектов, по директории на каждый проект;
- mysql и mysql-files - в этой папке будут храниться файлы наших баз данных;
- logs - здесь будет собриать логи из разных образов. В ней расположены 2 папки mysql и nginx;
- hosts - здесь будут храниться файлы конфигурации nginx для наших проектов;
- images - папка с нашими образами - компонентами нашей системы.
Еще не помешает создать дефолтный проект, чтобы проверить работоспособность нашей сборки когда все запустится. В директории www создадим директорию тестового проекта - hello.dev с одим единственным файлом index.php. Содердимое файла index.php классическое:
<?php phpinfo();
Также в корне будет лежать наш docker-compose.yml - сердце любой docker-конфигурации :)