1
0
Fork 0
mirror of https://github.com/EDeev/tablo.git synced 2026-10-07 20:49:31 +03:00

Docker: образ с Chromium для экспорта, compose вместе с PostgreSQL

- Dockerfile на python:3.12-slim с Playwright/Chromium, миграции при старте, gunicorn,
  непривилегированный пользователь;
- compose.yaml: приложение + PostgreSQL 16 с томом и проверкой готовности;
- .env.example переписан: SECRET_KEY, ИИ-провайдер, DATABASE_URL или DB_*;
- .gitignore.
This commit is contained in:
Деев Егор Викторович 2026-10-02 13:31:03 +00:00
parent ac8859d9d3
commit b7de6912db
5 changed files with 82 additions and 14 deletions

10
.dockerignore Normal file
View file

@ -0,0 +1,10 @@
.git
.github
**/__pycache__
.venv
venv
.env
tests
docs
*.md
*.pdf

View file

@ -1,17 +1,15 @@
# ── OpenAI API ──────────────────────────────────────────────────
# Flask: длинная случайная строка, без неё приложение не запустится
SECRET_KEY=
# ИИ-провайдер с OpenAI-совместимым API (распознавание фото и генерация трекеров)
OPENAI_API_KEY=
OPENAI_BASE_URL=
OPENAI_MODEL=
# OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o
# ── PostgreSQL ─────────────────────────────────────────────────
DB_HOST=
DB_PORT=
DB_NAME=
DB_USER=
DB_PASSWORD=
# ── Переменные окружения ───────────────────────────────────────
PYTHONDONTWRITEBYTECODE=1
# PostgreSQL: либо DATABASE_URL целиком, либо DB_* по отдельности
# DATABASE_URL=postgresql://tablo:tablo@localhost:5432/tablo
DB_HOST=localhost
DB_PORT=5432
DB_NAME=tablo
DB_USER=tablo
DB_PASSWORD=tablo

7
.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
__pycache__/
*.py[cod]
.venv/
venv/
.env
.pytest_cache/
.ruff_cache/

20
Dockerfile Normal file
View file

@ -0,0 +1,20 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
FLASK_APP=run.py \
PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt \
&& playwright install --with-deps chromium \
&& rm -rf /var/lib/apt/lists/*
COPY . .
RUN useradd --create-home --uid 1000 app && chown -R app:app /app
USER app
EXPOSE 8000
CMD ["sh", "-c", "flask db upgrade && gunicorn run:app --bind 0.0.0.0:8000 --workers 2 --timeout 120 --access-logfile -"]

33
compose.yaml Normal file
View file

@ -0,0 +1,33 @@
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: tablo
POSTGRES_PASSWORD: ${DB_PASSWORD:-tablo}
POSTGRES_DB: tablo
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U tablo"]
interval: 5s
retries: 10
restart: unless-stopped
web:
build: .
image: ghcr.io/edeev/tablo:latest
depends_on:
db:
condition: service_healthy
ports:
- "8000:8000"
env_file:
- path: .env
required: false
environment:
SECRET_KEY: ${SECRET_KEY:-change-me-to-a-long-random-string}
DATABASE_URL: postgresql://tablo:${DB_PASSWORD:-tablo}@db:5432/tablo
restart: unless-stopped
volumes:
pgdata: