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