docker-compose.yml¶
Was für die Docker Standardtechniken (docker run
) das Dockerfile
darstellt ist nun
die Konfigurationsdatei docker-compose.yml
für unser Tool docker-compose
!
# Datei test/docker-compose.yml
version: '3.7'
services:
db:
image: mariadb:latest
volumes:
- /var/dc-test-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: geheim
restart: always
wordpress:
image: wordpress:latest
volumes:
- /var/dc-test-www:/var/www/html
ports:
- "8082:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: geheim
restart: always
Dieses Hello WordPress!-Beispiel zu docker-compose
zeigt die zusätzliche „Intelligenz“
des docker-compose
-Tools gegenüber den Basistools Docker.
cd test # hier ist das docker-compose.yml
mkdir /var/dc-test-www # Volume Wordpress HTML; kann man weglassen (!)
mkdir /var/dc-test-db # Volume MariaDB Databases; kann man weglassen (!)
docker-compose up -d
Test hier einfach wieder mit Browser (URL): localhost:8082
Danach kann man alles beenden und löschen:
docker-compose down # es bleiben nur die Volumes!
rm -Rf /var/dc-test-db /var/dc-test-www # Volumes müssen manuell gelöscht werden
Netzwerke für docker-compose.yml
services:
web:
...
networks:
- mynet
# auf Top-Level die Netzwerke definieren
networks:
mynet:
external:
name: host
Bei der letzten Konfiguration ist das Docker-eigene Host-Netzwerk gemeint (siehe docker network ls
).
Netzwerkports
ports:
- "8080:80"
- "8443:443"
Auf die Hierarchie-Ebene für Definitionen achten.
Volumes
# Docker docker-compose.yml in Ordner testing
version: '3.7'
services:
nginx:
volumes:
- webdata:/var/www/html
...
volumes:
webdata:
Docker erstellt selbst ein Volume: /var/lib/docker/volumes/testing_webdata/_data
Mit einem weiteren docker-compose Beispiel (Joomla-Installation) können wir die Nutzung von Docker Volumes sehen:
Beispiel mit CMS Joomla und Volume webdata
:
# Datei: joomla/docker-compose.yml
version: '3.1'
services:
joomla:
image: joomla:apache-php7
ports:
- 8080:80
volumes:
- webdata:/var/www/html
environment:
JOOMLA_DB_HOST: mariadb
JOOMLA_DB_NAME: dockerbuch
JOOMLA_DB_USER: dockerbuch
JOOMLA_DB_PASSWORD: johroo2zaeQu
mariadb:
image: mariadb:10
environment:
MYSQL_ROOT_PASSWORD: eengi7suXeut
MYSQL_DATABASE: dockerbuch
MYSQL_USER: dockerbuch
MYSQL_PASSWORD: johroo2zaeQu
volumes:
webdata:
Testen der Persistierten Speicherung von Webdaten und Diskussion die Volumes in eigene Datenstrukturen zu binden.
docker-compose <commands>
config (Analyse)
up | down (up normalerweise kombiniert mit -d)
events
kill (falls stop|down nicht funzt)
logs
pause | unpause
ps