начало: Точка входа для новых участников
для локального запуска понадобится docker. инструкция по установке: https://docs.docker.com/engine/install/, затем https://docs.docker.com/compose/install/
после установки откройте папку проекта и обратите внимание на файл docker-compose.yml. в этом файле описано, какие сервисы запускаются для работы приложения. сейчас там есть следующие сервисы:
сервис | описание |
---|---|
web |
веб-сервер, принимает запросы и обслуживает интерактивные уроки |
db |
база данных Postgres, хранит данные о текущих участниках и тексты уроков/сообщений |
redis |
база данных для телеграм-бота |
tg_bot |
телеграм-бот |
prometheus , grafana |
какие-то логи и метрики |
scheduler |
наполняет базу данных текстами из гугл-таблицы |
nginx |
веб-сервер, перенаправляет внешние запросы в правильный контейнер |
для начала (а также после каждого изменения в код) контейнеры нужно собрать:
docker compose build
чтобы пересобрать только один сервис (например, тот, который вы отредактировали), укажите его название в конце команды:
docker compose build tg_bot
.env
для запуска контейнеров нужно задать правильные переменные окружения. для этого в корень проекта (в той же папке, где docker-compose.yml
) поместите файл .env
из приватного репозитория (репозиторий, файл).
в этом файле нужно локально отредактировать следующие строчки (подробно внутри булетов):
ONLINEEDU_CALLBACK_URL
./ngrok http 80
.env
.
ONLINEEDU_SPREADSHEET_ID
ONLINEEDU_TELEGRAM_SECRET
быстрый способ запустить сразу всё -- docker compose up
, однако это вызовет большое количество сообщений об ошибках в вашем терминале, в которых будет сложно разбираться, поэтому лучше делать так:
ngrok
работаетdb
web
redis
tg_bot
scheduler
nginx
общая последовательность команд:
docker compose up db
docker compose up web
docker compose up redis
docker compose up tg_bot
docker compose up scheduler
docker compose up nginx
следите за сообщениями из запускаемых сервисов.
ошибка вида файл не доступен для чтения/редактирования: выполняем следующую команду
sudo chmod a+rwx redis-db/ -R
для тестирования полезно иметь доступ к базе данных. для этого можно воспользоваться любым средством просмотра PostgreSQL: встроенное средство в PyCharm или JetBrains Datagrip (бесплатно для студентов). создайте подключение по данным из .env
и docker-compose.yml
. теперь вы сможете просматривать и редактировать данные в таблицах. это может быть полезно, чтобы удалить запись о пользователе tg_bot
(чтобы обнулить прогресс)
в VSCode есть расширение для работы с docker контейнерами. оно позволяет отображать все запущенные и остановленные контейнеры, просматривать логи, открывать консоль контейнера, запускать, перезапускать, останавливать и удалять контейнеры.