CI / pruefen (push) Has been cancelled
Der Datenbankport wurde in beiden Betriebsarten auf 0.0.0.0 gelegt, obwohl ihn nur die Entwicklung braucht: im Container spricht die Anwendung "db:5432" ueber das Compose-Netz an, und backup.sh geht ueber docker exec. Auf einem Server lauschte Postgres damit im Netz, geschuetzt allein durch das Passwort aus der .env. Die Anleitung riet zwar zu 127.0.0.1, aber als Handgriff statt als Voreinstellung -- die falsche Richtung. Datenbank und Adminer binden jetzt von Haus aus auf 127.0.0.1. Liegen mehrere Stacks auf einem Host und regelt ein gemeinsamer Reverse Proxy den Zugang, braucht Nebula gar keinen Host-Port. docker-compose.server.yml nimmt beide Freigaben zurueck und haengt die Anwendung in ein geteiltes Netz. Das braucht !reset: Compose fuehrt "ports" beim Zusammenfuehren anhaengend statt ersetzend zusammen, eine leere Liste im Override wuerde also nichts loeschen. update.sh las die Adresse aus APP_PORT und haette in diesem Modus einen Port gemeldet, den es nicht gibt. Es fragt jetzt Docker und sagt sonst, dass nur das interne Netz erreichbar ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
2.0 KiB
YAML
47 lines
2.0 KiB
YAML
# ─────────────────────────────────────────────────────────────
|
||
# Overlay fuer den Serverbetrieb: kein Port geht nach aussen.
|
||
#
|
||
# Gedacht fuer einen Docker-Host, auf dem mehrere Stacks liegen und ein
|
||
# gemeinsamer Reverse Proxy die einzige Tuer nach draussen ist. Weder die
|
||
# Datenbank noch die Anwendung veroeffentlichen dann einen Host-Port; der
|
||
# Proxy erreicht Nebula ueber ein geteiltes Docker-Netz.
|
||
#
|
||
# 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.
|
||
#
|
||
# 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:
|
||
db:
|
||
# !reset loescht die Portfreigabe aus der Basisdatei. Ohne dieses Tag
|
||
# wuerden die Listen zusammengefuegt statt ersetzt – Compose behandelt
|
||
# "ports" beim Zusammenfuehren als anzuhaengende Liste.
|
||
ports: !reset []
|
||
|
||
app:
|
||
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}
|