3.5 KiB
Опросник (Quiz for Mont)
Веб‑приложение на Flask + Peewee для проведения опросов и сравнения платформ.
Запуск
Есть два основных способа запуска: локально с SQLite или через Docker Compose с Postgres.
1) Локально (SQLite)
По умолчанию приложение пытается подключиться к Postgres. Если он недоступен, код автоматически переключится на SQLite. Чтобы явно форсировать SQLite:
- PowerShell (Windows):
$env:USE_SQLITE = '1'
$env:SQLITE_PATH = 'survey.db' # необязательно, по умолчанию survey.db
python main.py # или flask --app main run
2) Docker Compose (Postgres)
В проекте есть docker-compose.yml c сервисами db (Postgres) и flask-app.
docker-compose up -d
После поднятия контейнеров приложение доступно на http://localhost:3333.
Переменные окружения для подключения к Postgres уже прописаны в docker-compose.yml:
POSTGRES_HOST=dbPOSTGRES_DB=surveyPOSTGRES_USER=serveyPOSTGRES_PASSWORD=utOgbZ09servey
База данных и фолбэк
В models.py используется следующая логика инициализации БД:
- Если установлено
USE_SQLITE=1, используется SQLite (файлsurvey.db). - Иначе выполняется попытка подключения к Postgres. Если соединение не удалось (например, приложение запущено вне Docker и хост
dbнедоступен), приложение автоматически переключается на SQLite.
При первом запуске таблицы создаются автоматически.
Миграция данных из SQLite в Postgres
В проекте есть скрипт migrate_sqlite_to_postgres.py (используйте его при необходимости переноса данных). Перед миграцией убедитесь, что Postgres доступен и параметры подключения верны.
Полезные команды
- Установка зависимостей:
pip install -r requirements.txt
- Запуск Flask локально:
flask --app main run --debug
Переменные окружения
USE_SQLITE— если1, принудительно использовать SQLite.SQLITE_PATH— путь к файлу базы SQLite (по умолчаниюsurvey.db).POSTGRES_HOST— хост Postgres (по умолчаниюdb).POSTGRES_PORT— порт Postgres (по умолчанию5432).POSTGRES_DB— имя БД (по умолчаниюsurvey).POSTGRES_USER— пользователь Postgres (по умолчаниюservey).POSTGRES_PASSWORD— пароль Postgres.
Замечания по безопасности
Текущие значения по умолчанию для доступа к Postgres предназначены для локальной разработки и Docker. Для продакшена обязательно замените пароли и настройте защищённые секреты.