docker + datenhaltung refreshed

This commit is contained in:
br committed 2026-06-18 00:03:47 +02:00
1 parent dffc360790
commit 6eec88d8f5
10 files changed
+108 -25

No files matched your search

+7 -1
View File
@@ -4,4 +4,10 @@ SECRET_KEY=replace-with-a-secure-random-key-in-prod
ZITADEL_CLIENT_ID=your-zitadel-client-id ZITADEL_CLIENT_ID=your-zitadel-client-id
ZITADEL_CLIENT_SECRET=your-zitadel-client-secret ZITADEL_CLIENT_SECRET=your-zitadel-client-secret
ZITADEL_DISCOVERY_URL=https://id.vmlx.de/.well-known/openid-configuration ZITADEL_DISCOVERY_URL=https://id.vmlx.de/.well-known/openid-configuration
DATABASE_URL=sqlite:///app.db
# Verzeichnis für die SQLite-Datei (app.db wird darin angelegt).
# Gilt für flask run UND Docker gleichermassen.
# Docker-Compose mountet diesen Pfad als Bind Mount in den Container.
# Lokal: DB_DATA_PATH=./data → Projektordner/data/app.db
# Prod: DB_DATA_PATH=/dbdata → /dbdata/app.db auf dem Host
DB_DATA_PATH=./data
+1
View File
@@ -1,3 +1,4 @@
data/
venv/ venv/
__pycache__/ __pycache__/
*.pyc *.pyc
+8 -1
View File
@@ -11,14 +11,21 @@ OIDC Discovery URL.
""" """
import os import os
from pathlib import Path
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv() load_dotenv()
def _db_uri() -> str:
data_path = Path(os.environ.get("DB_DATA_PATH", "./data")).resolve()
data_path.mkdir(parents=True, exist_ok=True)
return f"sqlite:///{data_path}/app.db"
class Config: class Config:
SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-change-me") SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-change-me")
SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL", "sqlite:///app.db") SQLALCHEMY_DATABASE_URI = _db_uri()
SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_TRACK_MODIFICATIONS = False
ZITADEL_CLIENT_ID = os.environ.get("ZITADEL_CLIENT_ID") ZITADEL_CLIENT_ID = os.environ.get("ZITADEL_CLIENT_ID")
+4 -6
View File
@@ -2,15 +2,13 @@ services:
web: web:
build: build:
context: . context: .
# pull: true sorgt dafür, dass ein aktualisiertes Basis-Image einen Rebuild auslöst
pull_policy: always
env_file: env_file:
- .env - .env
ports: ports:
- "8000:8000" - "8000:8000"
volumes: volumes:
- db_data:/app/instance # Bind Mount auf Host-Pfad – kein Named Volume.
# DB liegt als echte Datei auf dem Host, überlebt jeden Rebuild und docker down.
# Pfad wird über DB_DATA_PATH in der .env gesetzt.
- ${DB_DATA_PATH:-./data}:/app/instance
restart: unless-stopped restart: unless-stopped
volumes:
db_data:
+14
View File
@@ -0,0 +1,14 @@
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build
.PHONY: help html clean
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)"
html:
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)"
clean:
rm -rf $(BUILDDIR)
+12 -2
View File
@@ -1,5 +1,8 @@
# Sphinx-Konfiguration – wird nach jedem Meilenstein mit flask seed-db und import os
# sphinx-apidoc -o docs/source/ app/ aktualisiert. import sys
# Projektroot ins sys.path, damit 'import app' funktioniert
sys.path.insert(0, os.path.abspath(".."))
project = "OIDC Flask Showcase" project = "OIDC Flask Showcase"
author = "Bjoern Runden" author = "Bjoern Runden"
@@ -12,3 +15,10 @@ extensions = [
exclude_patterns = ["_build"] exclude_patterns = ["_build"]
html_theme = "alabaster" html_theme = "alabaster"
# Autodoc-Optionen: Docstrings auch aus __init__ holen
autodoc_default_options = {
"members": True,
"undoc-members": True,
"show-inheritance": True,
}
+1 -14
View File
@@ -5,17 +5,4 @@ OIDC Flask Showcase – Dokumentation
:maxdepth: 2 :maxdepth: 2
:caption: Module: :caption: Module:
.. automodule:: app source/modules
:members:
.. automodule:: app.config
:members:
.. automodule:: app.models
:members:
.. automodule:: app.auth
:members:
.. automodule:: app.routes
:members:
+53
View File
@@ -0,0 +1,53 @@
app package
===========
Submodules
----------
app.auth module
---------------
.. automodule:: app.auth
:members:
:show-inheritance:
:undoc-members:
app.config module
-----------------
.. automodule:: app.config
:members:
:show-inheritance:
:undoc-members:
app.database module
-------------------
.. automodule:: app.database
:members:
:show-inheritance:
:undoc-members:
app.models module
-----------------
.. automodule:: app.models
:members:
:show-inheritance:
:undoc-members:
app.routes module
-----------------
.. automodule:: app.routes
:members:
:show-inheritance:
:undoc-members:
Module contents
---------------
.. automodule:: app
:members:
:show-inheritance:
:undoc-members:
+7
View File
@@ -0,0 +1,7 @@
app
===
.. toctree::
:maxdepth: 4
app
+1 -1
View File
@@ -1,7 +1,7 @@
""" """
WSGI-Einstiegspunkt für gunicorn (Produktion). WSGI-Einstiegspunkt für gunicorn (Produktion).
:author: <Vorname Nachname> :author: Björn Runden
:date: 2026-06-17 :date: 2026-06-17
:version: 0.1 :version: 0.1
""" """