Локальный деплой проектов в пару кликов — конкурс пет-проектов
Разработал консольную программу для автоматизированного локального деплоя проектов в пару команд, использующую Docker.
2К открытий4К показов
Как можно быстро развернуть сайт на своем компьютере и использовать все преимущества локальной разработки?
“Но ведь есть же Docker!”, — скажете вы. И будете совершенно правы, речь пойдёт именно о контейнеризации проектов. Только добавим немного автоматизации. =)
Как это было
Да, сначала был Docker. И было здорово, создаём docker-compose файл с php+mysql+nginx, пробрасываем файлы в контейнер, заливаем базу данных и кодим новые фичи для нашего проекта.
Но на весь этот процесс при первом локальном развороте сайта уходило слишком много времени. Да ещё и одновременно можно запустить только один сайт (либо настраивать постоянно конфигурацию Nginx).
Автоматизируем
Как и большинство разработчиков, я ленив, и если есть возможность что-то автоматизировать, я обязательно это сделаю.
Так и родился мой pet-проект, который по задумке должен был в пару команд в терминале развернуть сайт локально.
Назвал я его DL (Deploy Local). И представляет он из себя небольшую консольную утилиту, написанную на Go — обёртку над docker, которая скачивает по SSH типовой проект с сервера и поднимает всё локально в контейнерах. Правда, получилось чуть больше, чем пара команд, но раз уж автоматизировать, то делать это на максималках. =)
Что умеет
На данный момент программа при запуске деплоя с сервера умеет автоматически определять CMS WordPress, Bitrix и фреймворк Laravel. Но при небольшой настройке будет работать с чем угодно.
DL может запускаться на Linux, MacOS и Windows (через WSL2), позволяет одновременно поднять локально несколько проектов, умеет перехватывать почту, отправленную через PHP, генерирует самоподписанные ssl-сертификаты для локальных доменов и очень легко кастомизируется обычными docker-compose.yaml
файлами.
Пару команд
Для работы нужен только Docker Engine и docker-compose (v2). Вся конфигурация настраивается через .env
файл в несколько строк.
Проще всего установить dl через запуск bash-скрипта, но для Linux есть также варианты установки через apt и pacman.
После установки запускаем необходимые для работы локальные сервис-контейнеры (portainer, traefik, mailhog):
И вот пример самой простой конфигурации в .env
файле:
Сохраняем файл, запускаем скачивание проекта (должен быть прокинут ваш публичный ssh-ключ на сервер): dl deploy
.
Поднимаем его локально: dl up
.
Вы великолепны!
Теперь ваш сайт можно открыть в браузере по ссылкам, которые отобразяться в консоли. В примере выше это будет два варианта: либо site.com.localhost
, либо site.com.127.0.0.1.nip.io
.
На данный момент мой pet-проект все ещё обрастает новыми функциями, но уже имеет стабильные релизы и готов к использованию.
Буду рад, если эта утилита сделает вашу локальную разработку простой и продуктивной. =)
2К открытий4К показов