From f46763ace71ba2b4d72ad65ba7ec84979c660336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6hler?= Date: Mon, 2 Mar 2026 20:27:53 +0100 Subject: [PATCH] Add Docker deployment setup for web app --- .dockerignore | 10 ++++++++++ Dockerfile | 15 +++++++++++++++ README.md | 6 ++++++ WEB_README.md | 47 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 12 ++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..73a3b57 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.git +.venv +__pycache__ +*.pyc +*.pyo +*.pyd +*.log +build/ +*.ics +*.pdf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..332e80b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.12-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +WORKDIR /app + +COPY web/requirements-web.txt /app/web/requirements-web.txt +RUN pip install --no-cache-dir -r /app/web/requirements-web.txt + +COPY . /app + +EXPOSE 8000 + +CMD ["python", "-m", "uvicorn", "web.app:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/README.md b/README.md index 04a2fa7..476e4bf 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,12 @@ Browser-Variante mit Upload + direktem ICS-Download: Details siehe [WEB_README.md](WEB_README.md). +Docker-Variante (Server): + +```bash +docker compose up -d --build +``` + --- ## ⚡ Schnellstart (60 Sekunden) diff --git a/WEB_README.md b/WEB_README.md index bf3e381..0b13875 100644 --- a/WEB_README.md +++ b/WEB_README.md @@ -16,6 +16,53 @@ Danach im Browser öffnen: - Lokal: `http://localhost:8000` - Im Netzwerk (z. B. Smartphone): `http://:8000` +## Docker (Server ohne VPN) + +Diese Variante ist für deinen aktuellen Wunsch geeignet: öffentlich erreichbar ohne VPN. + +### 1) Starten + +```bash +docker compose up -d --build +``` + +Aufruf: +- Direkt per IP/Port: `http://:8000` +- Oder mit Domain über Reverse Proxy (empfohlen) + +### 2) Status und Logs + +```bash +docker compose ps +docker compose logs -f pdf-to-ics-web +``` + +### 3) Stoppen / Update + +```bash +docker compose down +git pull +docker compose up -d --build +``` + +### 4) Optional: App-Login aktivieren + +In `docker-compose.yml` die beiden Variablen aktivieren: + +```yaml +environment: + - WEB_AUTH_USER=kalender + - WEB_AUTH_PASSWORD=BitteSicheresPasswortSetzen +``` + +Dann neu starten: + +```bash +docker compose up -d --build +``` + +Hinweis: Ohne VPN ist mindestens HTTPS + Basic Auth empfohlen, wenn die App öffentlich im Internet hängt. + ## Funktionen - PDF-Datei hochladen diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8a82deb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + pdf-to-ics-web: + build: . + container_name: pdf-to-ics-web + restart: unless-stopped + ports: + - "8000:8000" + environment: + - TZ=Europe/Berlin + # Optional aktivieren für App-Login: + # - WEB_AUTH_USER=kalender + # - WEB_AUTH_PASSWORD=BitteSicheresPasswortSetzen