Для ускорения сборки контейнеров создан базовый образ в корне проекта, который содержит в себе большинство необходимых для приложений библиотек в виртуальном окружении и установленный пакет lib/database
для взаимодействия с БД. На уровне приложений у каждого есть собсвтенный Dockerfile, использующий базовый образ в качестве builder-образа. Базовый образ необходимо пересобирать всякий раз при редактировании lib
.
Для локального запуска следует использовать docker-compose.yml
с опцией --build
, например, docker-compose up --build --force-recreate --remove-orphans
(отличается от коллег тем, что самостоятельно собирает образы, а не ходит за ними в Registry).
Для запуска на проде – docker-compose.prod.yml
, например, docker-compose -f docker-compose.prod.yml pull && docker-compose -f docker-compose.prod.yml up -d --force-recreate --remove-orphans
.
Для запуска на тестинге – docker-compose.dev.yml
(отличается тегами образов).
Миграции с помощью alembic накатывает при запуске core. Писать и редактировать миграции рекомендуется вручную, не полагаться на автогенерацию, с которой очень легко сломать проект. Папка с миграциями подключается к core volume'ом, чтобы можно было на лету их редактировать, поэтому при накатывании нового релиза нужно не забыть обновить миграции на сервере, иначе не получим свежую схему в БД.
Актуальные продовые и препродовые окружения можно найти в репозитории
или попросить у коллег.
SENTRY_DSN
– адрес проекта в Sentry
ONLINEEDU_CALLBACK_URL
– адрес, на который будут приходить вебхуки с платформ интерактивных уроков и из телеграма, проще говоря – адрес, по которму отвечает приложение (прод – https://onlineedu.konstant-anxiety.ru/, для локальных запусков можно использовать ngrok)
ONLINEEDU_API_URL
– адрес, по которому отвечает core (http://web:5000 в случае единого docker-compose)
ONLINEEDU_TG_BOT_URL
– адрес, по которому отвечает tg_bot (http://tg_bot:6000 в случае единого docker-compose)
ONLINEEDU_ZULIP_BOT_URL
– адрес, по которому отвечает zulip_notifier (http://zulip_notifier:6001 в случае единого docker-compose)
ONLINEEDU_LOG_FILE
– путь к файлу для записи логов (на данных момент не используется)
POSTGRES_USER
, POSTGRES_PASSWORD
, POSTGRES_DB
– провиженинг постгреса
ONLINEEDU_DB_PATH
– полная строка подключения к БД (e.g. postgresql+psycopg2://user:password@host:5432/db-name
)
ONLINEEDU_SPREADSHEET_ID
– старый адрес гуглщита с уроками, не используется
ONLINEEDU_GOOGLE_CLIENT_ID
, ONLINEEDU_GOOGLE_CLIENT_SECRET
, ONLINEEDU_GOOGLE_AUTH_CREDS
– креденшалы сервисного аккаунта google
ONLINEEDU_GOOGLE_DISCOVERY_TABLE_ID
– ID discovery-гуглщита
ONLINEEDU_ZULIP_API_KEY
, ONLINEEDU_ZULIP_MAIL
, ONLINEEDU_ZULIP_SITE
– креденшалы бота в Zulip
ONLINEEDU_TELEGRAM_SECRET
токен телеграм бота, полученнй от @BotFather (для локальных тестов каждому разработчику рекомендуется завести своего бота, чтобы не пересекаться)
ONLINEEDU_ALERT_CHAT_ID
– ID чата в телеграм, в который присылаются алерты из графаны и репорты от пользователей
ONLINEEDU_TRELLO_API_URL
, ONLINEEDU_TRELLO_KEY
, ONLINEEDU_TRELLO_TOKEN
– информация для работы с Trello API
ONLINEEDU_TAIGA_API_URL
, ONLINEEDU_TAIGA_API_TOKEN
– информация для работы с Taiga API
ONLINEEDU_REDIS_HOST
, ONLINEEDU_REDIS_PORT
, ONLINEEDU_REDIS_DB
– креденшалы редиса для стейтов aiogram
ONLINEEDU_TELEGRAM_ADMINS
– список ([1, 3, 2]
) тг id админов (разработчиков), которым доступны дополнительные команды, например, /discard
для сброса стейта
ONLINEEDU_TIME_SYNC
– частота обновления БД из гуглщитов в минутах
Для некоторых приложений настроены проекты в Sentry, для добавления приходить к @askonstantinov
Для Olamia Edu настроено несколько небольших дашбордов в Grafana, которая доступна по адресу сервера. Позволяет мониторить утилизацию ресурсов и работу core.
По состоянию на май 2022 все приложения развернуты в Yandex Cloud. Доступ к машинкам по shh без пароля, за добавлением ключей приходить к @askonstantinov