Живешь ты себе спокойно, в проектах, которые крутятся на php 5.6, а вокруг из каждого утюга говорят о Docker и том что без него никак, а на твоем Linux/MacOs давно настроен и летает один environment на все и ты не понимаешь к чему вся эта шумиха :)
Почему же тебе может потребоваться таки перейти на новую технологию? Кроме как понимание того, что в каждой второй вакансии говорят что все давно сидят на Docker и ты тоже разумеется не можешь его не знать и не иметь 100500 лет опыта на нем, есть ряд весомых аргументов:
- сейчас это основная технология в CI/CD
- работа в команде, с разворотом у всех разработчиков одного окружения
- у тебя слетела система/купил новый комп/кот форматнул ночью диск :) и тебе надо срочно поднять окружение, так как завтра дедлайн, а ты как всегда еще не закончил
- у тебя несколько машин и тебе надо чтобы окружение было единым и легко переносились изменения
- проекты на разных окружениях (кто настраивал на макоси несколько версий php чтобы они нормально жили, поймут)
- проекты на старых окружениях, к которым пойди найди живые репозитории в новых осях
Как же без боли и многочасовых изучений Docker и написаний скриптов (Dockerfile) по созданию окружения с нуля? Тут нам на выручку приходит docker compose, который позволяет собирать окружение из готовых образов с DockerHub и по факту, если нам не нужно каких-то изменений от текущих образов, что требуется не часто на практике, то мы можем за 5 минут написать простенький файлик c конфигом для php + nginx + mysql и радоваться жизни запустив команду docker-compose upНо давайте все по шагам и на примерах
Чтобы запустить наше окружение, гасим текущие сервисы, nginx, mysql, php-fpm/php, не забываем сделать бекап ваших баз.
И так, глаза бояться, а руки делают:)
- Качаем и устанавливаем Docker с офф сайта для вашей операционки, в моем случае Mac OS Catalina. На сайте процесс установки сводиться к далее далее далее, и все максимально разжевано)
- Чтобы не тратить Ваше время на написания с нуля конфига, предлагаю свай вариант окружения, который вы можете поправить под свои нужды, по аналогии - https://github.com/verstov/kohana-env настоятельно прошу читать README.md
- Правим docker-compose.yml под свои нужды, вот принцип:
version - версия инструкций
services - список сервисов (каждый сервис будет запущен в отдельном контейнере)
image - образ (в моем случае с Docker Hub), поиске нужных для вас на Docker Hub там же и описание возможным параметров для настройки
volumes - маппинг реальной файловой системы и содержимого контейнера (система:контейнер)
ports - маппирование портов система:контейнер
depends_on - зависимости, чтобы к примеру php не стартовал раньше базы и так далее
networks - связываем все в одну сеть между контейнерами - Теперь немного о настройки самих проектов, нужно настроить хосты, если в /etc/hosts все остается по прежнему, то вот сами конфиги в ./etc/nginx делаем по аналогии, с примером default.conf.example
- Для макоси точно надо менять конфиг в приложении по адресу базы данных - docker.for.mac.host.internal
- docker-compose up и полетели)
В следующих статьях выложу примеры для популярных фрейморков Symfony и Laravel :)
Если будут вопросы, буду рад ответить в комментариях, удачи с переходом на Docker.