CI / pruefen (push) Has been cancelled
Der letzte Anlauf hat das Problem nicht geloest. Die Freigabe stand weiter in der Basisdatei, nur mit anderem Vorgabewert -- und Vorgabewerte greifen nicht, wo die Variable schon gesetzt ist: in jeder .env, die aus der bisherigen .env.example entstanden ist, steht POSTGRES_PORT="5432". Postgres band also unveraendert auf 0.0.0.0 und kollidierte mit anderen Stacks auf demselben Host; der Container kam gar nicht erst hoch. Das Overlay half nicht, weil es erst greift, wenn man es dazunimmt. Jetzt hat der db-Dienst keinen ports-Block mehr. Gebraucht wird er nur, wenn die Anwendung ausserhalb des Containers laeuft, und dafuer gibt es docker-compose.dev.yml (npm run docker:db). Damit ist der sichere Fall die Vorgabe und der Sonderfall die Ausnahme, nicht umgekehrt. Der App-Port bindet aus demselben Grund auf 127.0.0.1: Docker traegt seine Freigaben direkt in iptables ein und umgeht dabei ufw. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
2.1 KiB
YAML
47 lines
2.1 KiB
YAML
# ─────────────────────────────────────────────────────────────
|
||
# Overlay fuer den Serverbetrieb: kein einziger Port geht zum Host.
|
||
#
|
||
# Gedacht fuer einen Docker-Host, auf dem mehrere Stacks liegen und ein
|
||
# gemeinsamer Reverse Proxy die einzige Tuer nach draussen ist. Die
|
||
# Datenbank veroeffentlicht ohnehin nichts; diese Datei nimmt zusaetzlich
|
||
# die Freigabe der Anwendung zurueck und haengt sie in ein geteiltes Netz,
|
||
# ueber das der Proxy sie erreicht.
|
||
#
|
||
# Aufruf:
|
||
# docker compose -f docker-compose.yml -f docker-compose.server.yml \
|
||
# --profile full up -d --build
|
||
#
|
||
# Bequemer ist, das dauerhaft in die .env zu schreiben:
|
||
# COMPOSE_FILE=docker-compose.yml:docker-compose.server.yml
|
||
# COMPOSE_PROFILES=full
|
||
# Danach genuegt ueberall "docker compose up -d" – auch in update.sh.
|
||
# (Trennzeichen: Doppelpunkt unter Linux, Semikolon unter Windows.)
|
||
#
|
||
# Das Netz muss es vorher geben (der Proxy-Stack legt es ueblicherweise an):
|
||
# docker network create proxy
|
||
#
|
||
# Im Proxy zeigt das Ziel dann auf http://nebula:3000 bzw. nebula-app:3000.
|
||
# ─────────────────────────────────────────────────────────────
|
||
|
||
services:
|
||
app:
|
||
# !reset loescht die Portfreigabe aus der Basisdatei. Ohne dieses Tag
|
||
# wuerden die Listen zusammengefuegt statt ersetzt – Compose behandelt
|
||
# "ports" beim Zusammenfuehren als anzuhaengende Liste. Braucht
|
||
# Compose 2.24 oder neuer.
|
||
ports: !reset []
|
||
networks:
|
||
# Das stackeigene Netz: darueber spricht die Anwendung mit der Datenbank.
|
||
default:
|
||
# Das geteilte Netz zum Reverse Proxy. Der Alias ist der Name, unter dem
|
||
# der Proxy Nebula anspricht – kurz und eindeutig, denn "app" hiessen in
|
||
# einem geteilten Netz schnell mehrere Container.
|
||
proxy:
|
||
aliases:
|
||
- ${PROXY_ALIAS:-nebula}
|
||
|
||
networks:
|
||
proxy:
|
||
external: true
|
||
name: ${PROXY_NETWORK:-proxy}
|