153 lines
2.5 KiB
Markdown
153 lines
2.5 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
|
|
```
|
|
|
|
## Schaubild Docker-Netzwerke
|
|
|
|

|
|
|
|
### 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
|
|
```
|