docker-compose.yml auf Coolify-Caddy-Proxy umgestellt
Kein Host-Port-Mapping mehr, stattdessen Anbindung an das externe Docker-Netzwerk "coolify" mit caddy-Labels für domainbasiertes Routing und automatisches TLS über ressourceksr.bbundco.de. README entsprechend aktualisiert (Coolify-Deployment ohne manuelle Port-Konfiguration). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -87,16 +87,25 @@ per Proxy an das Backend weiter.
|
|||||||
## Deployment (Docker)
|
## Deployment (Docker)
|
||||||
|
|
||||||
Die App läuft als ein Container: Das Backend serviert die REST-API und das
|
Die App läuft als ein Container: Das Backend serviert die REST-API und das
|
||||||
gebaute Frontend intern über Port 8080, nach außen gemappt auf Host-Port 8090
|
gebaute Frontend intern über Port 8080. `docker-compose.yml` ist auf den in
|
||||||
(siehe `docker-compose.yml`).
|
Coolify installierten Caddy-Proxy zugeschnitten (siehe Abschnitt
|
||||||
|
"Deployment in Coolify") — es wird kein Host-Port mehr veröffentlicht,
|
||||||
|
stattdessen hängt sich der Container über das externe Docker-Netzwerk
|
||||||
|
`coolify` in den Proxy ein und ist über die im `caddy`-Label hinterlegte
|
||||||
|
Domain erreichbar.
|
||||||
|
|
||||||
|
Für einen rein lokalen Test außerhalb von Coolify muss das Netzwerk zuerst
|
||||||
|
angelegt werden, danach ist die App (ohne Domain/TLS) nur über die
|
||||||
|
Container-IP oder testweise per Port-Override erreichbar:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
docker network create coolify # einmalig, falls nicht vorhanden
|
||||||
docker compose up --build
|
docker compose up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
Danach ist die App unter http://localhost:8090 erreichbar. Die SQLite-Datenbank
|
Die SQLite-Datenbank liegt im Docker-Volume `data`. `ADMIN_EMAIL` vor dem
|
||||||
liegt im Docker-Volume `data`. `ADMIN_EMAIL` vor dem ersten Start setzen (z. B.
|
ersten Start setzen (z. B. in einer `.env`-Datei neben `docker-compose.yml`),
|
||||||
in einer `.env`-Datei neben `docker-compose.yml`), damit ein Start-Admin für
|
damit ein Start-Admin für
|
||||||
einen bestehenden Mitarbeiter angelegt wird.
|
einen bestehenden Mitarbeiter angelegt wird.
|
||||||
|
|
||||||
## Umstieg von der alten Version (ohne Login)
|
## Umstieg von der alten Version (ohne Login)
|
||||||
@@ -150,15 +159,17 @@ beim nächsten Login vergeben. Mit `--password` wird sofort ein Passwort gesetzt
|
|||||||
2. **Build-Pack**: **Docker Compose** wählen. Das mitgelieferte
|
2. **Build-Pack**: **Docker Compose** wählen. Das mitgelieferte
|
||||||
`docker-compose.yml` baut das `Dockerfile` (Multi-Stage: Vue-Build +
|
`docker-compose.yml` baut das `Dockerfile` (Multi-Stage: Vue-Build +
|
||||||
Node-Server) und startet einen einzelnen Container.
|
Node-Server) und startet einen einzelnen Container.
|
||||||
3. **Port**: Der Container lauscht intern auf Port `8080`, im
|
3. **Routing über den Caddy-Proxy**: Der Container veröffentlicht keinen
|
||||||
`docker-compose.yml` auf Host-Port `8090` gemappt (Port 8080 war auf dem
|
Host-Port mehr, sondern hängt sich über das externe Netzwerk `coolify`
|
||||||
Host bereits durch eine andere Ressource belegt →
|
(von Coolify automatisch angelegt) in den von Coolify verwalteten
|
||||||
`driver failed programming external connectivity ... port is already
|
Caddy-Proxy ein. Die Labels in `docker-compose.yml`
|
||||||
allocated`). In Coolify unter "Domains"/der Port-Konfiguration der
|
(`caddy: ressourceksr.bbundco.de` / `caddy.reverse_proxy:
|
||||||
Ressource **muss der Host-Port (8090) explizit eingetragen werden** —
|
"{{upstreams 8080}}"`) sorgen dafür, dass Caddy die Domain automatisch
|
||||||
das passiert nicht automatisch. Falls auch 8090 belegt sein sollte, in
|
auf Container-Port `8080` routet und ein TLS-Zertifikat besorgt. Damit
|
||||||
`docker-compose.yml` einen anderen freien Host-Port wählen (z. B.
|
das funktioniert, muss die Domain per DNS (A/AAAA-Record) auf den
|
||||||
`"8091:8080"`) und die Coolify-Konfiguration entsprechend nachziehen.
|
Coolify-Host zeigen; einen zusätzlichen Domain-/Port-Eintrag in der
|
||||||
|
Coolify-UI braucht es für dieses Setup nicht mehr. Soll die App unter
|
||||||
|
einer anderen Domain laufen, das `caddy`-Label entsprechend anpassen.
|
||||||
4. **Persistenz**: Das Docker-Volume `data` sichert `server/data/data.db`
|
4. **Persistenz**: Das Docker-Volume `data` sichert `server/data/data.db`
|
||||||
(SQLite). Bei Redeploys bleiben die Daten erhalten, solange das Volume
|
(SQLite). Bei Redeploys bleiben die Daten erhalten, solange das Volume
|
||||||
nicht gelöscht wird. Coolifys eingebaute Volume-Backup-Funktion kann
|
nicht gelöscht wird. Coolifys eingebaute Volume-Backup-Funktion kann
|
||||||
|
|||||||
+11
-2
@@ -1,13 +1,22 @@
|
|||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
build: .
|
build: .
|
||||||
ports:
|
expose:
|
||||||
- "8090:8080"
|
- "8080"
|
||||||
environment:
|
environment:
|
||||||
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
- ADMIN_EMAIL=${ADMIN_EMAIL}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/app/server/data
|
- data:/app/server/data
|
||||||
|
networks:
|
||||||
|
- coolify
|
||||||
|
labels:
|
||||||
|
caddy: ressourceksr.bbundco.de
|
||||||
|
caddy.reverse_proxy: "{{upstreams 8080}}"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
coolify:
|
||||||
|
external: true
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
|
|||||||
Reference in New Issue
Block a user