Skip to content

Основа для быстрой сборки backend-сервисов на основе Gorilla Mux + MongoDB + MongoExpress + Swagger + Prometheus + Grafana

Notifications You must be signed in to change notification settings

XanderMoroz/monGorilla

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monGorilla

                                                         

Python

Contributions welcome

License

📋 Table of Contents

  1. 🌀 Описание проекта
  2. 📈 Краткая документация API
  3. 💾 База данных
  4. 🚀 Инструкция по установке
  5. ©️ License

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)

ДЕТАЛЬНАЯ ИНФОРМАЦИЯ О МОДЕЛЯХ
ДЕТАЛЬНАЯ СХЕМА БАЗЫ ДАННЫХ

Screen Shot

  1. Подготовка проекта

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"


  1. Запуск проекта с Docker compose

2.1 Создаете и запускаете контейнер через терминал:

sudo docker-compose up --build

2.3 Сервисы доступны для эксплуатации:

  1. Дополнительные настройки

Как получить доступ к БД через Mongo-Express?
  1. Заходим в браузер по адресу Mongo-Express и вводим данные по умолчанию:
MONGO_EXPRESS_USERNAME=admin
MONGO_EXPRESS_PASSWORD=pass

Картинка

Как подключить Grafana к Prometheus?
  1. Заходим в браузер по адресу http://127.0.0.1:3000 и вводим данные по умолчанию:
  • Email or username: admin
  • Password: admin

Screen Shot

  1. После система потребует придумать новый пароль (это необязательно).

Screen Shot

  1. Мы авторизованы в сервисе Grafana. Добавим новое подключение...

Screen Shot

  1. Ищем в списке Prometheus и кликаем по нему

Screen Shot

  1. Теперь его нужно настроить

Screen Shot

  1. Извлекаем адрес хоста, на котором расположился Prometheus
sudo docker inspect prometheus | grep IPAddress

Screen Shot

  1. Заполняем Адрес сервера Prometheus данными хоста

Screen Shot

  1. Готово
Как сделать авто-генерацию документации Swagger?
  1. Устанавливаете swag
go get github.com/swaggo/swag/cmd/swag

3.2 Устанавливаете GOPATH

export PATH=$PATH:$(go env GOPATH)/bin

3.3 Генерируете новый вариант документации

swag init

About

Основа для быстрой сборки backend-сервисов на основе Gorilla Mux + MongoDB + MongoExpress + Swagger + Prometheus + Grafana

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published