- Ниже приведены команды, где вместо
<название_БД>
и<имя_пользователя>
вы подставляете, что хотите, лишь бы без угловых скобок и на латинице. В данном случае это название БД и имя пользователя в PostgreSQL соответственно. - Dragonfly - это Key-Value база данных, которая имеет полную совместимость с API редиски, но не является её форком. А ещё довольно производительная, многопоточная и вообще...
- Если вы работаете на Linux, вероятно потребуется ввести sudo перед командами, которые содержат в себе docker.
Данный Docker Compose не рекомендуется использовать для продакшена, так как он не устанавливает пароли для БД и вообще возможно сыроват. Зато фронтендерам будет удобно (наверно).
DB_NAME=<название_БД> DB_USER=<имя_пользователя> docker compose up backend db dragonfly
DB_USER=<название_БД> DB_NAME=<имя_пользователя> docker compose run --rm initdb
Готово! Ваш бекенд готов к изнурительной работе на господина-фронтенда.
docker run --rm --name psql -e POSTGRES_HOST_AUTH_METHOD=trust -e POSTGRES_DB=<название_БД> -e POSTGRES_USER=<имя_пользователя> --network=host postgres:17.1-alpine
docker run --rm --name dragonfly --ulimit memlock=-1 --network=host docker.dragonflydb.io/dragonflydb/dragonfly
cp .env.example .env
nvim .env
go run cmd/initdb/main.go
go run cmd/webserver/main.go
Тогда выполни эту команду (предварительно установив в свою ОС pre-commit):
pre-commit install
- Во-первых, всё это чудо, как вы могли догадаться, написано на Go. Просто потому что он хайповый, производительный, компилируется быстро, он простой, все дела.
- В качестве либы для PostgreSQL используется pgx, просто потому что он не deprecated, в отличие от некоторых.
- Для дракоши используется go-redis. Дракономух идеально умеет мимикрировать под редиску, поэтому и используем эту либу.
- Для логов используем Zap. Быстрый, есть настройка уровня логгирования, написан Uber'ом. Why not, как говорится.
- В качестве веб-фреймворка используем Gin. Поддерживает валидацию JSON, хайповый, а больше ничего и не надо.
Также, если хотите, вы можете почистить БД от ваших шалостей. Для этого вы можете выполнить одну из приведённых команд (в зависимости от вашего способа запуска):
DB_USER=<название_БД> DB_NAME=<имя_пользователя> docker compose run --rm dropdb
go run cmd/dropdb/main.go
Теперь мы можем в полной мере наслаждаться бекендом на Go :)