Giter Club home page Giter Club logo

helloworld_back's Introduction

HelloWorld backend

Простое приложение на Flask с возможностью регистрации, авторизации и отправки Email через Celery
Статья на Habr - https://habr.com/ru/company/domclick/blog/506802/

Автор

Борзов Олег
http://olegborzov.ru/

Структура проекта

Папки

  • .ci-cd - sh-скрипты для деплоя проекта на сервер
    • curl_tg.sh - отправка уведомлений о процессе деплоя в Telegram
    • deploy.sh - запуск деплоя на сервере после билда и прогона тестов в Github Actions
    • rollback.sh - откат деплоя на предыдущую версию
  • app_celery - таски, выполняемые Celery
    • periodic (пусто) - периодические задания, выполняемые по крону или с указанным интервалом
    • tasks - обычные Celery таски
    • utils - вспомогательные функции и декораторы
  • app_web - бек-часть
    • handlers - "ручки"
    • schemas - схемы валидации для ручек
    • utils - вспомогательные функции и декораторы
  • conf - конфигурационные файлы
    • .env_files - файлы с переменными окружения для конфигурации
    • docker - docker-файлы
  • core - общие вспомогательные классы, функции и декораторы для проекта
    • classes.py - базовые классы (абстрактные и мета)
    • decorators.py - полезные декораторы
    • manager.py - менеджеры для Flask
    • registry.py - фабрика для создания и инициализации Flask приложения
  • migrations - файлы миграций AlembicЛ
  • models - модели SQLAlchemy

Файлы

  • config.py - файл конфигурации для проекта (заполняется из переменных окружения)
  • run_server.py - файл для запуска сервера

Команды для запуска и настройки приложения

Создать виртуальное окружение для Python:

$ virtualenv venv                   # Создать виртуальное окружение
$ source venv/bin/activate          # Войти в виртуальное окружение

Команды CI/CD

# Запуск деплоя с новой версией
$ sh .ci-cd/deploy.sh ENV \
    DOCKER_REGISTRY_HOST DOCKER_REGISTRY_LOGIN DOCKER_REGISTRY_PASSWORD \ 
    TG_BOT_TOKEN TG_CHAT_ID

# Откат деплоя на предыдущую версию
$ sh .ci-cd/rollback.sh ENV \
    DOCKER_REGISTRY_HOST DOCKER_REGISTRY_LOGIN DOCKER_REGISTRY_PASSWORD \ 
    TG_BOT_TOKEN TG_CHAT_ID

# Пример команды
$ sh .ci-cd/deploy.sh dev \
    docker.helloworld.com docker_user docker_password \
    "110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw" "-1001234567890"

Docker

Запуск контейнеров

$ docker-compose -f docker-compose.local.db.yml up -d           # Запуск локального контейнера с БД
$ docker-compose -f docker-compose.local.workers.yml up -d      # Запуск локального окружения с воркерами
$ docker-compose -f docker-compose.test.yml run test_web        # Запуск тестов

Flask

Установить переменные окружения

$ export FLASK_APP=run_server.py    # Установка файла для запуска сервера
$ export FLASK_ENV=dev              # Установка окружения (local/test/dev/prod)
$ export FLASK_DEBUG=1              # Debug-режим

Запуск Flask приложения

$ flask run

Команды для миграций БД:

$ flask db init                     # Создание папки с миграциями
$ flask db migrate                  # При изменении моделей
$ flask db upgrade                  # Применение миграций к БД

helloworld_back's People

Contributors

dependabot[bot] avatar olegborzov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

helloworld_back's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.