Compose
Docker Compose ermöglicht es, mehrere Container als eine Anwendung zu definieren und zu starten – über eine einzige docker-compose.yml.
Compose Datei (Grundstruktur)
Compsoe datei erstellen.
nano docker-compose.yml
Beispiel:
services:
nginx:
image: nginx:latest
container_name: nginx-app
ports:
- "80:80"
Container im Hintergrund starten
docker compose up -d
Das erstellt automatisch:
- Container
- Netzwerk
- Volumes (falls definiert)
Compose Services (der Kern von Compose)
Jeder Eintrag unter services: ist ein Container.
services:
frontend:
image: nginx:latest
backend:
image: node:20
Compose erstellt automatisch:
- Ein gemeinsames Netzwerk
- DNS (Service-Namen = Hostnames!)
Backend erreichbar über:
http://backend:PORT
Compose + Volumes (Persistente Daten)
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./page:/usr/share/nginx/html:ro
Named Volume Beispiel:
services:
db:
image: postgres:16
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Best Practice:
- Bind Mount → Development
- Named Volume → Production (DB, stateful services)
Compose + Build (eigene Images)
Wenn du ein eigenes Dockerfile hast:
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: myapp
ports:
- "3000:3000"
Neu bauen:
docker compose up --build
Sehr wichtig für:
- Lokale Entwicklung
- CI/CD
- Custom Apps
Compose + Netzwerke
Compose erstellt automatisch ein Netzwerk
Custom Netzwerk:
services:
app:
image: myapp
networks:
- app-net
db:
image: postgres:16
networks:
- app-net
networks:
app-net:
Vorteil:
- Saubere Service-Kommunikation
- Isolierte Stacks