Найти тему
Web Developer Stories

У тебя еще проекты php 5, но ты тоже хочешь Docker?

Docker is everywhere
Docker is everywhere

Живешь ты себе спокойно, в проектах, которые крутятся на php 5.6, а вокруг из каждого утюга говорят о Docker и том что без него никак, а на твоем Linux/MacOs давно настроен и летает один environment на все и ты не понимаешь к чему вся эта шумиха :)

Say Docker one more time xD
Say Docker one more time xD

Почему же тебе может потребоваться таки перейти на новую технологию? Кроме как понимание того, что в каждой второй вакансии говорят что все давно сидят на Docker и ты тоже разумеется не можешь его не знать и не иметь 100500 лет опыта на нем, есть ряд весомых аргументов:

  • сейчас это основная технология в CI/CD
  • работа в команде, с разворотом у всех разработчиков одного окружения
  • у тебя слетела система/купил новый комп/кот форматнул ночью диск :) и тебе надо срочно поднять окружение, так как завтра дедлайн, а ты как всегда еще не закончил
  • у тебя несколько машин и тебе надо чтобы окружение было единым и легко переносились изменения
  • проекты на разных окружениях (кто настраивал на макоси несколько версий php чтобы они нормально жили, поймут)
  • проекты на старых окружениях, к которым пойди найди живые репозитории в новых осях

Как же без боли и многочасовых изучений Docker и написаний скриптов (Dockerfile) по созданию окружения с нуля? Тут нам на выручку приходит docker compose, который позволяет собирать окружение из готовых образов с DockerHub и по факту, если нам не нужно каких-то изменений от текущих образов, что требуется не часто на практике, то мы можем за 5 минут написать простенький файлик c конфигом для php + nginx + mysql и радоваться жизни запустив команду docker-compose upНо давайте все по шагам и на примерах

Чтобы запустить наше окружение, гасим текущие сервисы, nginx, mysql, php-fpm/php, не забываем сделать бекап ваших баз.

И так, глаза бояться, а руки делают:)

  1. Качаем и устанавливаем Docker с офф сайта для вашей операционки, в моем случае Mac OS Catalina. На сайте процесс установки сводиться к далее далее далее, и все максимально разжевано)
  2. Чтобы не тратить Ваше время на написания с нуля конфига, предлагаю свай вариант окружения, который вы можете поправить под свои нужды, по аналогии - https://github.com/verstov/kohana-env настоятельно прошу читать README.md
  3. Правим docker-compose.yml под свои нужды, вот принцип:
    version - версия инструкций
    services - список сервисов (каждый сервис будет запущен в отдельном контейнере)
    image - образ (в моем случае с Docker Hub), поиске нужных для вас на Docker Hub там же и описание возможным параметров для настройки
    volumes - маппинг реальной файловой системы и содержимого контейнера (система:контейнер)
    ports - маппирование портов система:контейнер
    depends_on - зависимости, чтобы к примеру php не стартовал раньше базы и так далее
    networks - связываем все в одну сеть между контейнерами
  4. Теперь немного о настройки самих проектов, нужно настроить хосты, если в /etc/hosts все остается по прежнему, то вот сами конфиги в ./etc/nginx делаем по аналогии, с примером default.conf.example
  5. Для макоси точно надо менять конфиг в приложении по адресу базы данных - docker.for.mac.host.internal
  6. docker-compose up и полетели)
Now and you know Docker)
Now and you know Docker)

В следующих статьях выложу примеры для популярных фрейморков Symfony и Laravel :)

Если будут вопросы, буду рад ответить в комментариях, удачи с переходом на Docker.