mitaba

0

Описание

Backend для таймера времени и денег titamota.ru

https://titamota.ru/

Языки

  • JavaScript72,6%
  • CSS21,6%
  • Python5,3%
  • Makefile0,4%
  • Остальные0,1%
README.md

Mitabá

Проект использует Docker, в частности утилиту Docker Compose в качестве платформы разработки и деплоя, поэтому все операции разворачивания и администрирования будут проходить через него. Данный ридми поможет преодолеть нубическость в нём.

Установите Docker и убедитесь в успехе через

$ docker -v
и
$ docker-compose -v
.

Docker для самых маленьких

Поднять докер обычно

$ docker-compose up
, но так как я использую несколько файлов конфигурации, то задаю его
docker-compose -f docker-compose.production.yml
. Остановить докер
docker-compose down
, а если вообще хочется подчистить контейнеры и volumes, то с ключом
-v
:
docker-compose -f docker-compose.production.yml down -v
.

Когда запущены контейнеры докера, в них можно входить через

$ docker exec -it mitaba_app bash
, где
mitaba_app
название контейнера (оно задается в схеме для docker-compose), для примера моего основного контейнера приложения.

Первоначальная настройка базы данных

Для этого зайти через

$ docker exec -it mitaba_app bash
внутрь работающего контейнера.

Администрирование

Полезные для работы с проектом команды заданы в

makefile
в корне проекта, запускаются например
make up
или
make down
(запуск/остановка докера). Это для тех счастливчиков, кто UNIX. Все остальные (windows) подсматривают
makefile
и самостоятельно запускают цепочки команд.

Обновление сертификатов (production)

Обновление сертификатов (development)

Очистка экосистемы докера

При работе с докером он зажирает место очень быстро, поэтому нужно периодически чистить лишнее, см. хелп докера. Но будь осторожен не похерь volume базы данных!

Дамп базы

Периодически делай дамп базы (TODO).

Перенос на другой сервер

Что нужно взять со старого [OLD_SERVER]?

  1. Забрать архив сертификатов:
  1. Забрать дампы базы данных

Развернуть проект на новом сервере [NEW_SERVER]

  1. Клонируем код приложения
  1. Кладем production-настройки Django на новый сервер
  1. Переносим сертификаты
  1. Переносим базу данных

Далее, важно чтобы база данных была пустая. Можно на всякий случай удалить и заново собрать докер, но без миграций:

В принципе, должно сразу и заработать. Возможные проблемы:

  1. Не забыть перенести доменное имя - для обновления сертификатов это понадобится (правда позже)
  2. Проблемы с доступом. Проще все делать через root. Для утилиты scp важно чтобы создаваемые папки были от пользователя, под которым заходим. Помнить что ssh берет ключ, но с именем пользователя будет тупить, имя нужно явно задавать. В общем, решать проблемы доступа по мере поступления - в зависимости от условий нового сервера шаманский бубен будет по-другому стучать.
  3. Много других проблем, но все поправляемо, главное:

DON'T PANIC.

Смена IP-адреса

Не забыть прописать в

/etc/hosts
сервера

xx.xx.xx.xx mitaba.ru mitaba xx.xx.xx.xx www.mitaba.ru

И поменять IP адрес на хостинге (в разделе "Записи DNS для зоны mitaba.ru")

Разработка

Устанавливаем Docker Клонируем проект Делаем сертификаты

make dev-cert
Поднимаем
make dev-up
Заходим внутрь и делаем миграции
make migrate
и админа админки
make superuser
для
local.mitaba.ru/admin

Пересобрать докер-образ

При изменении зависимостей в

app/requirements.txt
нужно пересобирать образ через
docker-compose up --build
(автоматически докер 'поднимется' после завершения сборки)

Задеплоить изменения в регистр докера

deploy-docker-image
. Возможно, сначала придется залогиниться в Docker Hub
docker login

Обойти блокировку Docker Hub

Инструкция: https://www.netangels.pro/article/docker-hub-zablokirovan-v-rf/