| |
| FROM python:3.9 |
|
|
| |
| RUN useradd -m -u 1000 user |
| USER user |
| ENV PATH="/home/user/.local/bin:$PATH" |
|
|
| |
| WORKDIR /app |
|
|
| |
| COPY --chown=user ./requirements.txt requirements.txt |
| RUN pip install --no-cache-dir --upgrade -r requirements.txt |
|
|
| |
| COPY --chown=user . /app |
|
|
| |
| RUN python - <<EOF |
| import sqlite3 |
| conn = sqlite3.connect('/app/database.db') |
| cursor = conn.cursor() |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS sessions ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| user_id INTEGER, |
| start_time TEXT, |
| end_time TEXT, |
| script_code TEXT, |
| rating INTEGER, |
| comments TEXT, |
| session_type TEXT, |
| duration INTEGER |
| ) |
| ''') |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS users ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| username TEXT UNIQUE, |
| password TEXT, |
| is_admin INTEGER DEFAULT 0 |
| ) |
| ''') |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS tasks ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| user_id INTEGER, |
| description TEXT, |
| completed INTEGER DEFAULT 0 |
| ) |
| ''') |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS settings ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| user_id INTEGER, |
| setting_name TEXT, |
| setting_value TEXT, |
| UNIQUE(user_id, setting_name) |
| ) |
| ''') |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS admin_settings ( |
| setting_name TEXT PRIMARY KEY, |
| setting_value INTEGER |
| ) |
| ''') |
| default_settings = [ |
| ('sound_enabled', 1), |
| ('notifications_enabled', 1), |
| ('dark_mode_enabled', 1), |
| ('task_manager_enabled', 1), |
| ('statistics_enabled', 1) |
| ] |
| cursor.executemany('INSERT OR IGNORE INTO admin_settings (setting_name, setting_value) VALUES (?, ?)', default_settings) |
| conn.commit() |
| conn.close() |
| EOF |
|
|
| |
| EXPOSE 7860 |
|
|
| |
| CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:7860", "app:app"] |