Vesp в Docker
Наконец-то у меня дошли руки разобраться с Docker и написать свою конфигурацию для работы с Vesp.
Теперь не нужно заморачиваться настройкой локального окружения через Valet, а можно просто запустить разработку в контейнере.
Вам будет доступна и база данных, и hot reload при разработке фронтенда, и даже Xdebug.
Установка
Для работы у вам уже должен быть установлен Docker на компьютере.
Скачиваем исходники из https://github.com/bezumkin/vesp.git, и переходим в директорию vesp/docker/. Затем переименовываем .env.dist в .env и запускаем docker-compose up.
Всё то же самое, только для любителей консоли:
git clone https://github.com/bezumkin/vesp.git
cd vesp/docker/
cp .env.dist .env
docker-compose up
В файле docker/.env находятся настройки и для контейнеров, и для запущенного внутри них Vesp.
При первом запуске придётся подождать минут 5-10, пока всё скачается и соберётся, но это только в первый раз, затем всё быстро.
Пока контейнеры запущены, вы будете видеть лог сообщений из них. Прервать работу можно обычным Ctrl+c,
Работа
После запуска вам доступны:
- 127.0.0.1:8080/ - Nginx сервер, который открывает собранные версии сайта и админки + отвечает на API запросы.
- 127.0.0.1:4000/admin/ - это админка в режиме разработки
- 127.0.0.1:4100/ - веб-сайт в режиме разработки
- 127.0.0.1:3333 - внешний порт MySQL, база vesp, юзер и пароль такие же
Теперь нужно зайти в контейнер с PHP и запустить наши миграции. Вход делается командой docker exec -it idконтейнера, и чтобы не узнавать каждый раз этот id, делаем вот так:
docker exec -it $(docker ps --filter name="vesp-php-fpm" -q) bash
Вы окажетесь в обычной консоли сервера, сразу в рабочей директории, где можно запускать composer:
composer install
composer db:migrate
composer db:seed
Если вдруг эта команда не сработает, то попробуйте зайти в консоль из десктопного приложения, там заходить в контейнеры можно прямо через интерфейс.
Статичные страницы для Nginx собираются в том случае, если при запуске контейнеров не было обнаружено директории frontend/dist. Так что если хотите пересобрать статику, то просто удалите эту директорию и перезапустите контейнеры.
Xdebug
В контейнере с PHP встроен Xdebug, и вы можете легко использовать его для отладки в PhpStorm.
Первым делом создаём новый сервер с обязательным именем VespDocker, прописываем адрес и порт контейнера Nginx и задаём соответствие 2х директорий: core и www:
Ну и настраиваем сам Xdebug примерно так:
Дальше указываем точку остановки где-нибудь в проекте, например в api.php и жмём на трубку в правом верхнем углу, чтобы она стала зелёной:
Теперь при каждом запросе в API ваш PhpStorm будет тормозить в указанном месте и ждать, пока вы там всё посмотрите.
Заключение
Выражаю благодарность Евгению Терину за его конфиги docker-compose, которыми я вдохновлялся, пока писал свои.
Надеюсь теперь познакомиться и начать работу с Vesp будет проще!
Обновлено 25.07.2022
Как оказалось, из-за особенностей работы MacOS с файловой системой, Docker в ней работает не очень быстро.
Почитал о проблеме и добавил работу через Mutagen Compose, который меняет логику синхронизации файлов между хостом и доком, ускоряя её разы.
Установить его можно через Homebrew:
brew install mutagen-io/mutagen/mutagen mutagen-io/mutagen/mutagen-compose
А затем запускать mutagen-compose вместо docker-compose:
mutagen-compose -f ./mutagen-compose.yml up --build
То есть, теперь у Vesp есть стандартный docker-compose.yml, и расширенный mutagen-compose.yml, которые запускаются разными командами.
И чтобы вам не заморачиваться их запоминанием, я добавил скрипт run.sh, который пытается запустить контейнеры через mutagen, а если его нет, то стандартным способом.
Разница между ними очень серьёзная. Установка зависимостей Node.js на моём Mac Mini M1 занимает:
- 245 секунд стандартным docker-compose
- 90 секунд при запуске через mutagen-compose
- 71 секунда при установке вообще без Docker, с локальным Node.js
Таким образом, если вы хотите работать с Docker на MacOS, обязательно установите Mutagen, это даст вам производительность сопоставимую с нативной работой с файлами.
Обновлено 02.12.2022
Мутаген больше не нужен - https://bezumkin.ru/sections/servers/3100
0
👍
👎
❤️
🔥
😮
😢
😀
😡
1 032
22.07.2022, 17:18:09
58 комментариев
bezumkin.ru
Личный сайт Василия Наумкина
Прямой эфир
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так.
А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен.
Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500
Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи.
...
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо!
Извини, тупанул.
---> Running in 00684a0e23b5
Package "xdebug" Version "3.1.5" does not have REST xml available install failed
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c pecl install xdebug' returned a non-zero code: 1