Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Локальный деплой проектов в пару кликов — конкурс пет-проектов

Отредактировано

Разработал консольную программу для автоматизированного локального деплоя проектов в пару команд, использующую 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.

			curl -s https://raw.githubusercontent.com/local-deploy/dl/master/install_dl.sh | bash
		

После установки запускаем необходимые для работы локальные сервис-контейнеры (portainer, traefik, mailhog):

			dl service up
		

И вот пример самой простой конфигурации в .env файле:

			## Удалённый сервер (PROD) ##
CATALOG_SRV=/var/www/site.com/public_html
USER_SRV=user
PORT_SRV=22
SERVER=127.0.0.1

## Локальная конфигурация ##
HOST_NAME=site.com
PHP_VERSION=8.2-fpm
MYSQL_VERSION=8.0
		

Сохраняем файл, запускаем скачивание проекта (должен быть прокинут ваш публичный ssh-ключ на сервер): dl deploy.

Поднимаем его локально: dl up.

Вы великолепны!

Теперь ваш сайт можно открыть в браузере по ссылкам, которые отобразяться в консоли. В примере выше это будет два варианта: либо site.com.localhost, либо site.com.127.0.0.1.nip.io.

На данный момент мой pet-проект все ещё обрастает новыми функциями, но уже имеет стабильные релизы и готов к использованию.

Буду рад, если эта утилита сделает вашу локальную разработку простой и продуктивной. =)

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий4К показов