Laradock

Автор:Игорь Тельменко

Laradock

Laradock — это готовая сборка образов Docker для разаработки php-приложений на Laravel. В то время, как Homestead использует виртуальную машину, Laradock использует все плюсы Docker.

Эта статья — короткая инструкция по поднятию Laradock на host-машине с Linux Mint (Debian, Ubuntu).
Для начала вам необходимо установить Docker CE и Docker Compose. Затем можно приступать к шагам, описаным в статье.

У Laradock есть 2 типа установки:

  • Установка для одного php-проекта
  • Установка для многих php-проектов

Думаю второй вариант более удобен, поэтому выберем его.
В директории с вашими проектами (или будущими проектами) необходимо склонировать репозиторий laradock.

В итоге в папке с проектами у вас будет такая структура папок

После этого в поддиректории laradock можно произвести необходимые настройки.

В данной статье, мы будем настраивать домен laradock-example.local. Создадим под него папку и файл index.php

Сам index.php можем наполнить таким содержимым:

Затем в /etc/hosts добавим такую строку

Теперь к настройкам laradock. Самое главное, что нам понадобится в поддиректории ~/projects/laradock — настройка виртуальных хостов nginx. Эти настройки находятся в ~/projects/laradock/nginx/sites. Там у вас будет уже 3 файла

  • default.conf
  • project-1.conf.example
  • project-2.conf.example

default.conf реальный конфиг, который будет обрабатываться, так как у него расширение .conf. А остальные 2 файла — просто примеры, любой из которых можно скопировать под именем заканчиваюмся на .conf и изменить внутренности.

Скопируем теперь файл project-1.conf.example в ~/projects/laradock/nginx/sites под новым именем laradock-example.conf

В файле нам надо исправить всего 2 строки

С server_name все понятно — это наш домен, который мы придумали для теста. А вот откуда берется /var/www/? Ведь у нас наша папка laradock-example находится в ~/projects.

Папка /var/www/ это куда laradock будет монтировать вашу папку с проектами. В данной статье это — ~/projects. Тоесть папка ~/projects примонтируется внутри контейнера docker в папку /var/www. Поэтому в ней и окажется созданная нами папка laradock-example cо всем содержимым.

Еще в папке ~/projects/laradock нам надо скопировать файл env-example под новым именем .env.

В данном файле можно определять какие сервисы, службы, устанавливтаь для нашего окружения на laradock, какие порты и другие настройки сервисов (служб) использовать. Пока мы не будем здесь ничего менять. Обратим только внимание на эти строки:

Как раз здесь в комментарии и говорится, что наша папка будет примонтирована к папке /var/www контейнера. И что наша папка это «../», тоесть на 1 уровень выше чем ~/projects/laradock, а значит монтироваться будет папка ~/projects вашей host-системы.

Теперь мы можем попробовать запустить наши контейнеры

Повторные запуски будут запускать наши контейнеры всего за 2-3 секунды. При первом же запуске они будут долго скачиваться и собираться. Так что придется набраться терпения.

Если на вашей host-машине у вас подняты и работают mysql, веб-сервер и ssh_демон, то возможно вы увидите такие ошибки:

Происходят они потому, что нужные порты уже заняты. Выхода 2: менять порты либо выключить сервисы host-машины.

Вот так можно выключить mysql и apache. По этому же принципу можно выключить другие службы.

После этого необходимо повторно запустить docker-compose. В случае успеха лог в консоли будет короткий:

Здесь видно, что наши контейнеры запустились и им присвоены имена laradock_applications_1, laradock_workspace_1, aradock_php-fpm_1 и laradock_nginx_1.

Запуск был с опцией -d, что означает «daemon» — запуск в фоновом режиме.

Специальной командой можно посмотреть список контейнеров и их статус:

В браузере уже должен открываться наш сайт http://laradock-example.local и отображать таблицу phpinfo.

Теперь осталось установить laravel. Для этого нам необходимо открыть терминал контейнера workspace:

И уже в нем перейдем в папку /var/www/laradock-example, удалим там все содержимое и установим laravel.

Содержимое можем удалить из под root

А вот устанавливать Laravel лучше под обычным пользвателем:

Вот теперь у нас по адресу http://laradock-example.local в браузере открывается приветсвенная страница с оформлением Laravel.

Когда запущенные контейнеры laradock нам не нужны в памяти нашего компьютера мы можем их выключить:

Кстати, у нас есть еще дефолтный виртуальный хост nginx. К нему будет резольвиться домен, который прописан в hosts, но не имеет собсвенной настройки в nginx. Но чтобы там что-то открывалось нужно немного подправить ~/projects/laradock/nginx/sites/default.conf и/или создать папку public c файлом index.php.

В файле ~/projects/laradock/nginx/sites/default.conf прописана строка:

Ну, а дальше вы поняли.

Вот и весь процесс первичной настройки и запуска.

Полезные команды:

Примечания:
При работе с mysql возникали проблемы с работой ряда пакетов. Например, с voyager. При использовании вместо mysql контейнера mariadb этих проблем не возникало (docker-compose up -d nginx php-fpm mariadb workspace).

Полезные ссылки:

Оставить ответ