===== Docker Compose Erste Schritte =====
==== Kurzfassung ====
* Docker Compose orchestriert mehrere Container mit deklarativen YAML-Dateien.
* Dienste werden gemeinsam gestartet, gestoppt und skaliert.
* Mit wenigen Kommandos läuft ein Apache-Webserver mit PHP 8 samt Volume.
==== Voraussetzungen ====
* Installierte Docker Engine und Docker Compose Plugin ([[docker:docker_installation|Docker Installation]])
* Benutzer mit Zugriff auf die docker-Gruppe oder sudo
* Optional: Git/Editor für eigene Projektdateien
==== Erste Schritte ====
**Version prüfen:**
docker compose version
**Neues Projektverzeichnis anlegen:** \\
(Es wird im Homeverzeichnis des User ein docker Ordner erstellt)
mkdir -p ~/docker/apache-php-compose/html
**Docker-Compose-Datei erstellen:**
cat <<'EOF' > ~/docker/apache-php-compose/docker-compose.yml
services:
web:
image: php:8.2-apache
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
EOF
**Beispielindex mit phpinfo() erzeugen:**
cat <<'EOF' > ~/docker/apache-php-compose/html/index.php
==== Apache mit PHP 8 starten ====
**Container starten (Detached, benannt durch Dienstnamen):**
cd ~/docker/apache-php-compose
docker compose up -d
**Log-Ausgabe verfolgen und Ergebnis prüfen:**
docker compose logs --tail 20
# Browser: http://localhost:8080
**Container stoppen und entfernen:**
docker compose down
==== Eigenes Image erweitern (optional) ====
cat <<'EOF' > ~/docker/apache-php-compose/Dockerfile
FROM php:8.2-apache
RUN docker-php-ext-install pdo_mysql
COPY html/ /var/www/html/
EOF
cat <<'EOF' > ~/docker/apache-php-compose/docker-compose.yml
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
EOF
docker compose up -d --build
==== Kommandos ====
**Dienste im Vordergrund starten:**
docker compose up
**Projekt im Hintergrund starten:**
docker compose up -d
**Logs aller Dienste einsehen:**
docker compose logs -f
**Container stoppen / entfernen:**
docker compose down
**Einzelnen Dienst neu starten:**
docker compose restart web
==== Siehe auch ====
* [[docker:docker_erste_schritte|Docker Erste Schritte]]
* [[docker:docker_info|Docker Überblick]]
* [[docker:deployment_pipelines|Deployment Pipelines]]
{{tag>docker compose einstieg apache php}}