mirror of
https://github.com/skoelle/mvg-departures.git
synced 2026-09-17 18:40:23 +00:00
docs: fix version, terminology and docker-compose reference consistency
This commit is contained in:
@@ -49,7 +49,7 @@ Kein Linter konfiguriert. Bei Bedarf: `ruff check app/` oder `black app/`
|
|||||||
|
|
||||||
1. **Ein-Datei-App**: `main.py` enthält alle Endpunkte und Logik → bewusst simpel gehalten
|
1. **Ein-Datei-App**: `main.py` enthält alle Endpunkte und Logik → bewusst simpel gehalten
|
||||||
2. **Keine DB**: Alles In-Memory → Neustart = Cache-Verlust (akzeptabel)
|
2. **Keine DB**: Alles In-Memory → Neustart = Cache-Verlust (akzeptabel)
|
||||||
3. **Exclude-Filter**: Whitelist-Logik (alles anzeigen AUSSER exclude_destinations)
|
3. **Exclude-Filter**: Blacklist-Logik (alles anzeigen AUSSER exclude_destinations)
|
||||||
4. **Template-Rendering**: Server-seitig via Jinja2, kein Frontend-Framework
|
4. **Template-Rendering**: Server-seitig via Jinja2, kein Frontend-Framework
|
||||||
5. **Config-Pfad**: `CONFIG_PATH` Env-Var oder `config.yaml` als Fallback
|
5. **Config-Pfad**: `CONFIG_PATH` Env-Var oder `config.yaml` als Fallback
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Kein Linter konfiguriert. Bei Bedarf: `ruff check app/` oder `black app/`
|
|||||||
## Sicherheit
|
## Sicherheit
|
||||||
|
|
||||||
- Keine Secrets im Code
|
- Keine Secrets im Code
|
||||||
- Config.yaml kann sensible Stationsnamen enthalten → Volume-Mount, nicht ins Image
|
- Config.yaml kann sensitive Stationsnamen enthalten → in Produktion als Read-Only-Volume-Mount überschreiben; das Image enthält nur eine Default-Config
|
||||||
- GHCR-Token nur in CI, nie im Repo
|
- GHCR-Token nur in CI, nie im Repo
|
||||||
|
|
||||||
## Deployment-Hinweise
|
## Deployment-Hinweise
|
||||||
|
|||||||
@@ -53,18 +53,20 @@ uvicorn app.main:app --reload
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t mvg-departures .
|
docker build -t mvg-departures .
|
||||||
docker run -p 8000:8000 -v $(pwd)/config.yaml:/app/config.yaml mvg-departures
|
docker run -p 8000:8000 -e TZ=Europe/Berlin -v $(pwd)/config.yaml:/app/config.yaml mvg-departures
|
||||||
```
|
```
|
||||||
|
|
||||||
## Deployment (Beispiel docker-compose, nicht im Repo)
|
## Deployment
|
||||||
|
|
||||||
|
Siehe `docker-compose.yml` im Repo als Referenz. Beispiel (Owner anpassen):
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
mvg-departures:
|
mvg-departures:
|
||||||
image: ghcr.io/<github-user>/mvg-departures:latest
|
image: ghcr.io/skoelle/mvg-departures:latest
|
||||||
container_name: mvg-departures
|
container_name: mvg-departures
|
||||||
ports:
|
ports:
|
||||||
- "8090:8000"
|
- "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- ./config.yaml:/app/config.yaml:ro
|
- ./config.yaml:/app/config.yaml:ro
|
||||||
environment:
|
environment:
|
||||||
@@ -108,25 +110,32 @@ https://www.mvg.de/api/bgw-pt/v3/departures?globalId=de:09162:910&limit=10&trans
|
|||||||
```
|
```
|
||||||
mvg-departures/
|
mvg-departures/
|
||||||
├── app/
|
├── app/
|
||||||
│ ├── main.py # FastAPI-App, Endpunkte, Caching
|
│ ├── __init__.py
|
||||||
|
│ ├── main.py # FastAPI-App, Endpunkte, Caching
|
||||||
│ ├── config.py # Config-Loader (YAML → Dataclasses)
|
│ ├── config.py # Config-Loader (YAML → Dataclasses)
|
||||||
│ └── templates/
|
│ └── templates/
|
||||||
│ └── index.html # Jinja2-Template (Mobile-UI)
|
│ └── index.html # Jinja2-Template (Mobile-UI)
|
||||||
├── config.yaml # Stationskonfiguration
|
├── config.yaml # Stationskonfiguration
|
||||||
|
├── docker-compose.yml # Deployment-Beispiel
|
||||||
├── requirements.txt # Python-Dependencies
|
├── requirements.txt # Python-Dependencies
|
||||||
├── Dockerfile
|
├── Dockerfile
|
||||||
|
├── .dockerignore
|
||||||
|
├── .gitignore
|
||||||
|
├── AGENTS.md
|
||||||
|
├── SPEC.md
|
||||||
|
├── renovate.json
|
||||||
└── .github/workflows/
|
└── .github/workflows/
|
||||||
└── build.yml # CI/CD: Docker-Build + GHCR-Push
|
└── build.yml # CI/CD: Docker-Build + GHCR-Push
|
||||||
```
|
```
|
||||||
|
|
||||||
## Tech-Stack
|
## Tech-Stack
|
||||||
|
|
||||||
- **Runtime**: Python 3.12
|
- **Runtime**: Python 3.14
|
||||||
- **Framework**: FastAPI + Uvicorn
|
- **Framework**: FastAPI + Uvicorn
|
||||||
- **Templating**: Jinja2 (server-seitig)
|
- **Templating**: Jinja2 (server-seitig)
|
||||||
- **MVG-API**: `mvg` Python-Client (oeffentlich, kein Auth noetig)
|
- **MVG-API**: `mvg` Python-Client (oeffentlich, kein Auth noetig)
|
||||||
- **Config**: YAML via `pyyaml`
|
- **Config**: YAML via `pyyaml`
|
||||||
- **Container**: Docker (python:3.12-slim)
|
- **Container**: Docker (python:3.14-slim)
|
||||||
|
|
||||||
## Caching
|
## Caching
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ mvg-departures/
|
|||||||
│ └── index.html # Jinja2-Template (mobile HTML-Ansicht)
|
│ └── index.html # Jinja2-Template (mobile HTML-Ansicht)
|
||||||
├── config.yaml # Stationskonfiguration
|
├── config.yaml # Stationskonfiguration
|
||||||
├── requirements.txt # Python-Dependencies
|
├── requirements.txt # Python-Dependencies
|
||||||
├── Dockerfile # Multi-Stage Build (python:3.12-slim)
|
├── Dockerfile # Single-Stage Build (python:3.14-slim)
|
||||||
├── docker-compose.yml # Deployment-Beispiel
|
├── docker-compose.yml # Deployment-Beispiel
|
||||||
└── .github/workflows/
|
└── .github/workflows/
|
||||||
└── build.yml # CI/CD: Docker-Build + GHCR-Push
|
└── build.yml # CI/CD: Docker-Build + GHCR-Push
|
||||||
@@ -26,13 +26,13 @@ mvg-departures/
|
|||||||
|
|
||||||
| Komponente | Technologie |
|
| Komponente | Technologie |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Runtime | Python 3.12 |
|
| Runtime | Python 3.14 |
|
||||||
| Web-Framework | FastAPI |
|
| Web-Framework | FastAPI |
|
||||||
| Templating | Jinja2 |
|
| Templating | Jinja2 |
|
||||||
| API-Client | `mvg` (PyPI) |
|
| API-Client | `mvg` (PyPI) |
|
||||||
| Config | YAML (`pyyaml`) |
|
| Config | YAML (`pyyaml`) |
|
||||||
| Server | Uvicorn |
|
| Server | Uvicorn |
|
||||||
| Container | Docker (python:3.12-slim) |
|
| Container | Docker (python:3.14-slim) |
|
||||||
| CI/CD | GitHub Actions → GHCR |
|
| CI/CD | GitHub Actions → GHCR |
|
||||||
|
|
||||||
## 4. Datenfluss
|
## 4. Datenfluss
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
"""Config-Loader fuer die Stationsliste aus config.yaml."""
|
"""Config-Loader für die Stationsliste aus config.yaml."""
|
||||||
import os
|
import os
|
||||||
import yaml
|
import yaml
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
|
|||||||
Reference in New Issue
Block a user