- Dragonfly - это Key-Value база данных, которая имеет полную совместимость с API редиски, но не является её форком. А ещё довольно производительная, многопоточная и вообще...
- Если вы работаете на Linux, вероятно потребуется ввести sudo перед командами, которые содержат в себе docker.
Just - это command runner. Команды берутся из файла с названием justfile. Список всех доступных команд можно получить, запустив: just -l
. Вы можете использовать эту команду, как ещё одну документацию для запуска проекта.
Данный Docker Compose не рекомендуется использовать для продакшена, так как он не устанавливает пароли для БД и вообще возможно сыроват. Зато фронтендерам будет удобно (наверно).
just full-run-compose
Данная команда очищает всю базу данных, если в ней что-то было, после чего заново её инициализурует, после чего уже запускает само приложение вместе с необходимыми сервисами.
Если вы хотите сами контроллировать, когда инициализировать и очищать базу данных, вы можете использовать команды just initdb-compose
, just dropdb-compose
и just run-compose
.
Также вы можете запустить приложение в режиме разработки. В таком случае оно запуститься в Docker Compose через Air, которые автоматически перекомплириует проект при изменении файлов. Для этого вам также нужно инициализировать базу данных при помощи just initdb-compose
и запустить проект при помощи just dev
.
Готово! Ваш бекенд готов к изнурительной работе на господина-фронтенда.
just rundb-docker
just runfly-docker
cp .env.example .env
nvim .env
just initdb-host
just run-host
Тогда выполни эту команду (предварительно установив в свою ОС pre-commit):
just precommit-install
- Во-первых, всё это чудо, как вы могли догадаться, написано на Go. Просто потому что он хайповый, производительный, компилируется быстро, он простой, все дела.
- В качестве либы для PostgreSQL используется pgx, просто потому что он не deprecated, в отличие от некоторых.
- Для дракоши используется go-redis. Дракономух идеально умеет мимикрировать под редиску, поэтому и используем эту либу.
- Для логов используем Zap. Быстрый, есть настройка уровня логгирования, написан Uber'ом. Why not, как говорится.
- В качестве веб-фреймворка используем Gin. Поддерживает валидацию JSON, хайповый, а больше ничего и не надо.
Также, если хотите, вы можете почистить БД от ваших шалостей. Для этого вы можете выполнить одну из приведённых команд (в зависимости от вашего способа запуска):
just dropdb-compose
или
just dropdb-host
Теперь мы можем в полной мере наслаждаться бекендом на Go :)