Files
docker-workshop/04 docker-compose-basics.md
2025-03-19 09:59:13 +01:00

2.5 KiB

Vortrags-Script: Docker Compose Basics

Einführung Docker Compose

Zweck und Vorteile

  • Definition: Tool zur Verwaltung mehrerer Container als Anwendung
  • Installation prüfen:
    docker-compose --version
    

YAML-Syntax

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret

Grundbefehle

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

services:
  web:
    depends_on:
      - db
docker-compose up -d db
docker-compose up -d web

Umgebungsvariablen

echo "DB_PASSWORD=secret" > .env
docker-compose up -d

Schaubild Docker-Netzwerke

Docker Networks

Netzwerke zwischen Containern

docker-compose exec web ping db
docker network ls
docker network inspect <project_name>_default

Docker Compose in Entwicklung

Hot-Reloading

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

docker-compose logs -f
docker-compose exec web bash
docker-compose exec -T web php -v

Ressourcenkontrolle

docker stats $(docker-compose ps -q)

Zusammenfassung und Beispiel

Komplettes Beispiel: LAMP-Stack

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

# 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