clone repository
git clone https://git.miem.hse.ru/301/ps22.git
открываем папку ps22
в редакторе
в папку добавляем файл .env
следующего вида:
ONLINEEDU_CALLBACK_URL=<ваша ссылка на ngrok, см. ниже>
ONLINEEDU_SPREADSHEET_ID=1w-gEiLmC8bQoP0j_dIrBXYAfbV37uFlV627E_HsMMYE
ONLINEEDU_REPORT_SPREADSHEET_ID=<айди спредшита, в который будет записываться оценка>
ONLINEEDU_REPORT_SPREADSHEET_RANGE=report
ONLINEEDU_GOOGLE_CLIENT_ID=377536106514-0fn91ds9dcj9fkq9gcnhpj9msna59u4q.apps.googleusercontent.com
ONLINEEDU_GOOGLE_CLIENT_SECRET=<секрет для client id>
ONLINEEDU_GOOGLE_SERVICE_ACCOUNT_CREDS='<ключ сервисного аккаунта>'
ONLINEEDU_DB_PATH=postgresql://postgres:postgres@db:5432/postgres
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<пароль, будет задан локально>
ONLINEEDU_ZULIP_API_KEY=<ключ бота (сделайте нового в зулипе)>
ONLINEEDU_ZULIP_API_EMAIL=<почта вашего бота>
GIT_API_TOKEN=<токен>
GIT_API_URL=https://git.miem.hse.ru
ONLINEEDU_TAIGA_API_URL=https://track.miem.hse.ru
ONLINEEDU_TAIGA_API_TOKEN=<токен>
ONLINEEDU_LOGGING_LEVEL=DEBUG
ONLINEEDU_TIME_SYNC=60
OAUTHLIB_INSECURE_TRANSPORT=1
TEST_SPREADSHEET_ID=1Mu9VvjD6IA7BK_3cEZq3Rr80Z7J7X4Li6n_OYN7hSbs
полная версия файла: https://git.miem.hse.ru/301/private-repo-for-301/-/blob/master/sync_server/.env
serv-717@project-296019.iam.gserviceaccount.com
. главное не попортить доступные ему таблицы, для тестов лучше создать новую.пытаемся собрать контейнеры. подробно: https://git.miem.hse.ru/301/onlineedu-async/-/wikis/run-and-test-locally-async-version
docker compose build
табличка:
сервис | описание |
---|---|
web |
веб-сервер, принимает запросы и обслуживает интерактивные уроки |
db |
база данных Postgres, хранит данные о текущих участниках и тексты уроков/сообщений |
receive |
приём сообщений из зулипа |
scheduler |
наполняет базу данных текстами из гугл-таблицы, будет делать log file rotation |
nginx |
веб-сервер, перенаправляет внешние запросы в правильный контейнер |
запуск ngrok
ONLINEEDU_CALLBACK_URL
./ngrok http 80
.env
.
после того, как ngrok
заработал на порт 80, копируем ссылку (http или https) в первую строчку .env
.
запускаем остальное, лучше в следующей последовательности.
docker compose up db
docker compose up scheduler
docker compose up receive
docker compose up nginx
docker compose up web
если всё включилось, то запросы по ссылке, которую создал ngrok
, будут попадать в web
, можно их обрабатывать.
Ports are not available -- порт занят, скорее всего, нужно выключить какой-то старый контейнер. если не поможет, использовать следующий по счёту (5001, 5002..) свободный порт. это надо указать в файле docker-compose.yml
и nginx.conf
, после этого заново запустить контейнер.
docker-compose.yml:
ports:
- 5000:5000
server {
listen 80;
location / {
proxy_pass http://web:5002;
}
location /index.html {
return 200 "ok";
}
}
после изменений в когда какого-либо контейнера нужно его остановить, пересобрать и запустить заново. если web
не получает запросы, перезапустить с ним nginx
. возможно, несколько раз, пока не заработает.
для удобства нужно создать venv
и установить все библиотеки из всех requirements.txt
. как создавать виртуальное окружение -- гугл, одна из инструкций. как установить библиотеки:
pip install -r requirements.txt
or
pip3 install -r requirements.txt
были замечены проблемы на python3.10
, если что, придётся учиться включать python3.9
в виртуальном окружении.