Reverse-Proxy in eigenes Projekt ausgelagert
Ein Caddy pro Compose-Projekt funktioniert nur, solange es ein Projekt gibt: Port 443 laesst sich nicht teilen, und die TLS-Konfiguration verteilt sich sonst ueber fremde Repos. Der Proxy liegt jetzt zentral in docker-edge. - caddy-Service und Caddyfile entfernt - web haengt im gemeinsamen externen Netz "edge" und veroeffentlicht keinen Port mehr - json-file-Logrotation gesetzt, Docker rotiert sonst gar nicht - README auf die neue Aufteilung umgeschrieben Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+20
-40
@@ -1,51 +1,31 @@
|
||||
# Nur die Anwendung. TLS, Domains und Security-Header liegen zentral im
|
||||
# Edge-Projekt (docker-edge), das als einziger Stack die Ports 80/443 besitzt.
|
||||
#
|
||||
# Voraussetzung: das gemeinsame Netz existiert und der Edge-Caddy laeuft.
|
||||
# docker network create edge
|
||||
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
image: djnizz-website:latest
|
||||
container_name: djnizz-web
|
||||
restart: unless-stopped
|
||||
# Nur auf Loopback veroeffentlicht: aus dem Internet nicht erreichbar,
|
||||
# aber ein bereits vorhandener Reverse-Proxy auf dem Host kann darauf
|
||||
# zugreifen. Mit eigenem Caddy (Profil "edge") laeuft der Verkehr
|
||||
# stattdessen ueber das interne Docker-Netz.
|
||||
ports:
|
||||
- '${WEB_BIND:-127.0.0.1:4321}:4321'
|
||||
# Kein Port-Mapping: der Node-Prozess ist ausschliesslich innerhalb des
|
||||
# edge-Netzes erreichbar, von aussen kommt man nur ueber Caddy dran.
|
||||
expose:
|
||||
- '4321'
|
||||
networks:
|
||||
- djnizz
|
||||
- edge
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
|
||||
caddy:
|
||||
# Startet nur mit: docker compose --profile edge up -d
|
||||
# Weglassen, wenn auf dem Server bereits ein Reverse-Proxy die Ports
|
||||
# 80/443 belegt - zwei Prozesse koennen sich einen Port nicht teilen.
|
||||
profiles: ['edge']
|
||||
image: caddy:2-alpine
|
||||
container_name: djnizz-caddy
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- '80:80'
|
||||
- '443:443'
|
||||
- '443:443/udp' # HTTP/3
|
||||
environment:
|
||||
DOMAIN: ${DOMAIN:-djnizz.at}
|
||||
ACME_EMAIL: ${ACME_EMAIL:-business.djnizz@gmail.com}
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- caddy_data:/data # Zertifikate - dieses Volume nicht loeschen
|
||||
- caddy_config:/config
|
||||
- caddy_logs:/var/log/caddy
|
||||
depends_on:
|
||||
- web
|
||||
networks:
|
||||
- djnizz
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
|
||||
volumes:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
caddy_logs:
|
||||
# Docker rotiert json-file-Logs sonst gar nicht - die Platte laeuft voll.
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: '10m'
|
||||
max-file: '3'
|
||||
|
||||
networks:
|
||||
djnizz:
|
||||
edge:
|
||||
name: edge
|
||||
external: true
|
||||
|
||||
Reference in New Issue
Block a user