Files
docker-workshop/04 docker-compose-basics.md
Frank Woeckener 0b92efc1ea Initial Commit
2025-03-18 06:42:24 +01:00

148 lines
2.4 KiB
Markdown

# Vortrags-Script: Docker Compose Basics
## Einführung Docker Compose
### Zweck und Vorteile
- **Definition**: Tool zur Verwaltung mehrerer Container als Anwendung
- **Installation prüfen**:
```bash
docker-compose --version
```
### YAML-Syntax
```yaml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
```
### Grundbefehle
```bash
docker-compose up
docker-compose up -d
docker-compose down
docker-compose ps
docker-compose logs
docker-compose logs -f web
```
## Mehrcontainer-Anwendungen
### Service-Abhängigkeiten
```yaml
services:
web:
depends_on:
- db
```
```bash
docker-compose up -d db
docker-compose up -d web
```
### Umgebungsvariablen
```bash
echo "DB_PASSWORD=secret" > .env
docker-compose up -d
```
### Netzwerke zwischen Containern
```bash
docker-compose exec web ping db
docker network ls
docker network inspect <project_name>_default
```
## Docker Compose in Entwicklung
### Hot-Reloading
```bash
docker-compose exec web ls -la /var/www/html
# Änderung an lokaler Datei vornehmen
docker-compose exec web cat /var/www/html/index.php
```
### Debugging
```bash
docker-compose logs -f
docker-compose exec web bash
docker-compose exec -T web php -v
```
### Ressourcenkontrolle
```bash
docker stats $(docker-compose ps -q)
```
## Zusammenfassung und Beispiel
### Komplettes Beispiel: LAMP-Stack
```yaml
version: '3'
services:
web:
build: ./php
ports:
- "8000:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
environment:
DB_HOST: db
DB_USER: app
DB_PASSWORD: secret
DB_NAME: myapp
db:
image: mysql:8.0
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootsecret
MYSQL_DATABASE: myapp
MYSQL_USER: app
MYSQL_PASSWORD: secret
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
environment:
PMA_HOST: db
depends_on:
- db
volumes:
db-data:
```
### Praktische Befehle
```bash
# Alle Container starten
docker-compose up -d
# Status prüfen
docker-compose ps
# Service neu erstellen und starten
docker-compose up -d --force-recreate web
# Logs überwachen
docker-compose logs -f
# Alles herunterfahren und aufräumen
docker-compose down -v --remove-orphans
# Neu bauen und starten
docker-compose build --no-cache
docker-compose up -d
```