Compose: Web + Datenbank + Cache
Ein typischer Stack für die lokale Entwicklung: App aus eigenem Dockerfile, PostgreSQL und Redis.
Bauen
- Neues Projekt, Datei
docker-compose.yml(Typ Compose) - Startblock Docker Compose · Projekt mit Namen
shop - Aus Vorlagen darunter ziehen:
- Datenbanken → PostgreSQL (bringt das Volume
pgdatamit) - Datenbanken → Redis (persistent)
- Web → App aus Dockerfile
- Datenbanken → PostgreSQL (bringt das Volume
- Im App-Service die Werte anpassen: Port
8080 → 3000, wartet auf db bis gesund
Die Vorlagen in der Palette einer Compose-Datei:

So sieht ein fertiger Stack aus. Das mitgelieferte Beispielprojekt Compose: Web + Postgres + Redis nutzt zusätzlich die Variablen DB_PASSWORD und WEB_PORT:

Ergebnis des Stacks aus den Vorlagen (gekürzt):
name: shop
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me
POSTGRES_DB: app
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: [CMD-SHELL, pg_isready -U app]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
app:
build: .
ports:
- "8080:3000"
env_file:
- .env
depends_on:
db:
condition: service_healthy
restart: unless-stopped
volumes:
pgdata:
Passwort als Variable
Statt change-me direkt einzutragen:
- Variable
DB_PASSWORDanlegen: dev =dev, prod =ein-langes-passwort - Im Block Variable POSTGRES_PASSWORD = … den Wert
${DB_PASSWORD}eintragen
Nur in dev: Mailpit & Adminer
Die Vorlagen Tools → Mailpit und Tools → Adminer hinzufügen. Mailpit steckt im Compose-Profil dev und startet nur mit:
docker compose --profile dev up -d
Härten für den Betrieb
Im App-Service die Vorlagen Betrieb → Gehärteter Service, Log-Rotation und Ressourcen-Limits einhängen.