refactor(repo): deploy/ heißt jetzt build/ – der Name sagte das Gegenteil
"deploy" klang nach Ausrollen, drin steht das Gegenteil: das Bau-Rezept und das Compose, das aus dem Quelltext baut. Ausgerollt wird mit docker-compose.example.yml im Wurzelverzeichnis. Marc ist genau darüber gestolpert. Zwei Dinge mussten dafür vorher fest werden, sonst hätte das Umbenennen die Entwicklungsdatenbank gekostet: Compose leitet den Projektnamen aus dem Ordnernamen ab und hätte unter "build" ein neues, leeres Projekt mit neuem, leerem Volume angelegt. Der Projektname steht deshalb jetzt im Compose (name: aether), und das Volume trägt seinen alten Namen ausdrücklich weiter (deploy_postgres_data) – unschön, aber die Daten bleiben. Ebenfalls angepasst: .gitignore. Dort stand deploy/.env; nach dem Umbenennen wäre build/.env nur noch von der allgemeinen .env-Zeile gedeckt gewesen. Nachgeprüft nach dem Umzug: Abbild baut, Stapel startet, 113 Dateien in der Datenbank wie vorher, Volume unverändert deploy_postgres_data, GET / → 200. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a7a67da040
commit
471679ff64
7 files changed
+30
-20
No files matched your search
+3
-3
@@ -2,8 +2,8 @@
|
||||
#
|
||||
# Diese Datei gilt für beides: den Betrieb mit dem fertigen Abbild
|
||||
# (docker-compose.example.yml hier im Wurzelverzeichnis) und die Entwicklung
|
||||
# aus dem Quelltext (deploy/docker-compose.yml, liest deploy/.env).
|
||||
# Für die Entwicklung: cp .env.example deploy/.env
|
||||
# aus dem Quelltext (build/docker-compose.yml, liest build/.env).
|
||||
# Für die Entwicklung: cp .env.example build/.env
|
||||
#
|
||||
# Zwei Fallen beim Bearbeiten:
|
||||
# $ im Wert → als $$ schreiben, sonst schneidet Compose ab
|
||||
@@ -139,7 +139,7 @@ HONEYBAR_ORIGIN=
|
||||
# Aether – dann schickt der Browser die HoneyOS-Sitzung nicht mit.
|
||||
HONEYBAR_KEY=
|
||||
|
||||
# ══ Nur für deploy/docker-compose.yml ═════════════════════════════════════════
|
||||
# ══ Nur für build/docker-compose.yml ══════════════════════════════════════════
|
||||
# Diese vier steuern den Office-Container aus dem Entwicklungs-Compose. Beim
|
||||
# Betrieb mit eigenem Office-Container stehen sie in dessen Compose-Datei.
|
||||
#
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# Secrets
|
||||
deploy/.env
|
||||
build/.env
|
||||
.env
|
||||
|
||||
# Aus den Beispielen kopiert – gehört in die Umgebung, nicht ins Repo.
|
||||
|
||||
@@ -36,7 +36,7 @@ aether/
|
||||
│ ├── pages/
|
||||
│ ├── api/ # Typed API-Client
|
||||
│ └── hooks/
|
||||
├── deploy/ # Docker Compose, Dockerfile, .env.example
|
||||
├── build/ # Dockerfile + Compose zum Bauen aus dem Quelltext
|
||||
└── CLAUDE.md
|
||||
```
|
||||
|
||||
@@ -156,7 +156,7 @@ Kein Commit ohne grüne Tests.
|
||||
|
||||
## Docker & Secrets
|
||||
|
||||
- **Backend immer via Docker starten/laufen lassen (`docker compose ...` in `deploy/`), nie `go run`.** Der Host hat kein Go-Toolchain installiert; Builds/Compile-Checks laufen über das `golang:1.25-alpine`-Image. Migrations + DB-Verbindung sind auf die Compose-Umgebung ausgelegt.
|
||||
- **Backend immer via Docker starten/laufen lassen (`docker compose -f build/docker-compose.yml ...`), nie `go run`.** Der Host hat kein Go-Toolchain installiert; Builds/Compile-Checks laufen über das `golang:1.25-alpine`-Image. Migrations + DB-Verbindung sind auf die Compose-Umgebung ausgelegt.
|
||||
- Secrets **nur** über `.env` / Compose-Env – nie im Image oder Repo
|
||||
- Multi-Stage-Build: Builder-Stage (Go-Compiler) → Alpine final
|
||||
- `.env` ist in `.gitignore`; `.env.example` zeigt alle Keys ohne Werte
|
||||
|
||||
@@ -42,11 +42,11 @@ Zwei Wege, je nachdem was du vorhast:
|
||||
| | |
|
||||
|---|---|
|
||||
| **Betreiben** | `docker-compose.example.yml` im Wurzelverzeichnis. Zieht das fertige Abbild, braucht keinen Quelltext. |
|
||||
| **Entwickeln** | `deploy/docker-compose.yml`. Baut aus dem Quelltext. |
|
||||
| **Entwickeln** | `build/docker-compose.yml`. Baut aus dem Quelltext. |
|
||||
|
||||
Die **`.env.example` im Wurzelverzeichnis gilt für beide** – eine Datei, alle
|
||||
Einstellungen. Sie lag bis zum 02.09.2026 doppelt vor (einmal schlank hier,
|
||||
einmal vollständig unter `deploy/`), und die beiden liefen auseinander: Der
|
||||
einmal vollständig im Bau-Ordner), und die beiden liefen auseinander: Der
|
||||
produktiven fehlten am Ende zwölf Schlüssel, darunter `SESSION_MAX_AGE`, und
|
||||
sie empfahl für `OFFICE_WOPI_URL` einen Wert, der mit Collabora nicht
|
||||
funktioniert.
|
||||
@@ -73,7 +73,7 @@ cd aether
|
||||
|
||||
```bash
|
||||
cp .env.example .env # beim Betreiben
|
||||
cp .env.example deploy/.env # beim Entwickeln (dorthin schaut das Compose)
|
||||
cp .env.example build/.env # beim Entwickeln (dorthin schaut das Compose)
|
||||
```
|
||||
|
||||
Ausfüllen musst du mindestens:
|
||||
@@ -110,8 +110,8 @@ Beim ersten Start:
|
||||
Aus dem Quelltext bauen statt ziehen:
|
||||
|
||||
```bash
|
||||
docker compose -f deploy/docker-compose.yml build app
|
||||
docker compose -f deploy/docker-compose.yml up -d
|
||||
docker compose -f build/docker-compose.yml build app
|
||||
docker compose -f build/docker-compose.yml up -d
|
||||
```
|
||||
|
||||
Aktualisieren:
|
||||
@@ -313,9 +313,9 @@ nur `GET`/`POST`, und dann scheitert das Einbinden mit einem `405`.
|
||||
## Abbild bauen und veröffentlichen
|
||||
|
||||
```bash
|
||||
# im Wurzelverzeichnis des Projekts, nicht in deploy/
|
||||
# im Wurzelverzeichnis des Projekts, nicht in build/
|
||||
IMG=gitea.honeyy.duckdns.org/docker/aether
|
||||
docker build -f deploy/Dockerfile -t $IMG:$(date +%Y.%m.%d) -t $IMG:latest .
|
||||
docker build -f build/Dockerfile -t $IMG:$(date +%Y.%m.%d) -t $IMG:latest .
|
||||
docker push $IMG:$(date +%Y.%m.%d)
|
||||
docker push $IMG:latest
|
||||
```
|
||||
@@ -395,7 +395,7 @@ aether/
|
||||
│ ├── components/
|
||||
│ ├── hooks/
|
||||
│ └── pages/
|
||||
├── deploy/
|
||||
├── build/
|
||||
│ ├── docker-compose.yml # app + postgres (kein Proxy-Container)
|
||||
│ ├── Dockerfile
|
||||
│ └── .env.example
|
||||
|
||||
File renamed without changes.
@@ -1,16 +1,22 @@
|
||||
# Aether – Entwicklung: aus dem Quelltext bauen.
|
||||
#
|
||||
# docker compose -f deploy/docker-compose.yml build app
|
||||
# docker compose -f deploy/docker-compose.yml up -d
|
||||
# docker compose -f build/docker-compose.yml build app
|
||||
# docker compose -f build/docker-compose.yml up -d
|
||||
#
|
||||
# Zum **Betreiben** ist docker-compose.example.yml im Wurzelverzeichnis
|
||||
# gedacht: schlanker und ohne Quelltext, es zieht das fertige Abbild.
|
||||
#
|
||||
# Die Einstellungen kommen aus deploy/.env – als Vorlage dient die eine
|
||||
# .env.example im Wurzelverzeichnis: cp .env.example deploy/.env
|
||||
# Die Einstellungen kommen aus build/.env – als Vorlage dient die eine
|
||||
# .env.example im Wurzelverzeichnis: cp .env.example build/.env
|
||||
#
|
||||
# Erklärungen zu allem hier: README.md
|
||||
|
||||
# Der Projektname steht hier fest und wird **nicht** aus dem Ordnernamen
|
||||
# abgeleitet. Sonst hinge er daran, wie der Ordner gerade heißt: Beim
|
||||
# Umbenennen von deploy/ nach build/ hätte Compose ein neues, leeres Projekt
|
||||
# angelegt – mit einer neuen, leeren Datenbank.
|
||||
name: aether
|
||||
|
||||
services:
|
||||
app:
|
||||
container_name: aether-app
|
||||
@@ -18,7 +24,7 @@ services:
|
||||
# Kontext ist das Wurzelverzeichnis – das Abbild braucht backend/ und
|
||||
# frontend/, nicht nur diesen Ordner.
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile
|
||||
dockerfile: build/Dockerfile
|
||||
image: gitea.honeyy.duckdns.org/docker/aether:latest
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
@@ -88,6 +94,10 @@ services:
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
# Fester Name, aus demselben Grund. Er stammt noch aus der Zeit, als der
|
||||
# Ordner „deploy" hieß – umbenennen hieße hier: neues Volume, leere
|
||||
# Datenbank. Der unschöne Name ist der Preis dafür, die Daten zu behalten.
|
||||
name: deploy_postgres_data
|
||||
# "data" ist bewusst weg – die Dateien liegen unter DATA_PATH auf dem Wirt.
|
||||
# Die Datenbank bleibt ein benanntes Volume: An ihre Dateien geht man nicht
|
||||
# von Hand, und Postgres mag fremde Besitzer nicht.
|
||||
@@ -16,7 +16,7 @@
|
||||
# `docker compose stop office`.
|
||||
#
|
||||
# Hintergrund und Fallstricke: README.md
|
||||
# Aus dem Quelltext bauen statt ziehen: deploy/docker-compose.yml
|
||||
# Aus dem Quelltext bauen statt ziehen: build/docker-compose.yml
|
||||
|
||||
services:
|
||||
app:
|
||||
|
||||
Reference in new issue
Block a user