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:
parent
ac8859d9d3
commit
b7de6912db
5 changed files with 82 additions and 14 deletions
10
.dockerignore
Normal file
10
.dockerignore
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
.git
|
||||
.github
|
||||
**/__pycache__
|
||||
.venv
|
||||
venv
|
||||
.env
|
||||
tests
|
||||
docs
|
||||
*.md
|
||||
*.pdf
|
||||
26
.env.example
26
.env.example
|
|
@ -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
7
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
__pycache__/
|
||||
*.py[cod]
|
||||
.venv/
|
||||
venv/
|
||||
.env
|
||||
.pytest_cache/
|
||||
.ruff_cache/
|
||||
20
Dockerfile
Normal file
20
Dockerfile
Normal 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
33
compose.yaml
Normal 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:
|
||||
Loading…
Add table
Reference in a new issue