monGorilla - готовая основа для быстрой сборки backend-сервисов на основе Gorilla Mux
, База данных - Mongo
. Интерфейс Базы данных - GORM
. Интерфейс API Swagger
. Мониторинг - Prometheus
. Метрики хоста - Node Exporter
. Визуализация - Grafana
. Сборка - Docker Compose
.
Работа с моделями осуществляется по следующим эндпоинтам:
HTTP Method | HTTP request | Description |
---|---|---|
[POST] | /api/users | Регистрация нового пользователя |
[GET] | /api/users | Извлечь всех пользователей про логину и паролю |
[GET] | /api/users/{id} | Извлечение пользователя по ID |
[PUT] | /api/users/{id} | Обновить пользователя по ID |
[DELETE] | /api/users/{id} | Удалить пользователя по ID |
База данных содержит 1 модель: - Пользователь (User)
ДЕТАЛЬНАЯ ИНФОРМАЦИЯ О МОДЕЛЯХ
1.1 Клонируете репозиторий
git clone https://github.com/XanderMoroz/monGorilla.git
1.2 В корневой папки создаете файл .env
1.3 Заполняете файл .env по следующему шаблону:
################################################################################
# APP Config
# Automatically setup app variables
################################################################################
APP_ENV="DEV"
APP_PORT=":8080"
SERVER_ADDRESS=""
ACCESS_TOKEN_SECRET="nduenvrvneu8957hhoiif932ejcp92nf9ne7h3p2982jijpkm2[jw[8h"
ACCESS_TOKEN_EXPIRY_HOUR=1
################################################################################
# MONGO Config
# Automatically create database and user
################################################################################
MONGO_DB_DRIVER="mongodb"
MONGO_ROOT_USERNAME="xander"
MONGO_ROOT_PASSWORD="rndm-pass"
MONGO_DB_NAME="mongorilla"
MONGO_DB_PORT="27017"
# MONGO_DB_HOST="127.0.0.1" # Без docker
MONGO_DB_HOST="mongo" # С docker
################################################################################
# MONGO_EXPRESS Config
# Automatically create database client credentials
################################################################################
MONGO_EXPRESS_USERNAME="admin"
MONGO_EXPRESS_PASSWORD="rndm-pass"
MONGO_EXPRESS_SERVER="mongodb"
2.1 Создаете и запускаете контейнер через терминал:
sudo docker-compose up --build
2.3 Сервисы доступны для эксплуатации:
- Fiber APP: http://127.0.0.1:8080/
- Swagger: http://127.0.0.1:8080/swagger/index.html
- Mongo-Express: http://127.0.0.1:8081
- Prometheus: http://127.0.0.1:9090
- Grafana: http://127.0.0.1:3000
Как получить доступ к БД через Mongo-Express?
- Заходим в браузер по адресу Mongo-Express и вводим данные по умолчанию:
MONGO_EXPRESS_USERNAME=admin
MONGO_EXPRESS_PASSWORD=pass
Картинка
Как подключить Grafana к Prometheus?
- Заходим в браузер по адресу http://127.0.0.1:3000 и вводим данные по умолчанию:
- Email or username: admin
- Password: admin
- После система потребует придумать новый пароль (это необязательно).
- Мы авторизованы в сервисе Grafana. Добавим новое подключение...
- Ищем в списке Prometheus и кликаем по нему
- Теперь его нужно настроить
- Извлекаем адрес хоста, на котором расположился Prometheus
sudo docker inspect prometheus | grep IPAddress
- Заполняем Адрес сервера Prometheus данными хоста
- Готово
Как сделать авто-генерацию документации Swagger?
- Устанавливаете swag
go get github.com/swaggo/swag/cmd/swag
3.2 Устанавливаете GOPATH
export PATH=$PATH:$(go env GOPATH)/bin
3.3 Генерируете новый вариант документации
swag init