4. Docker Compose: MariaDB, Adminer, WordPress (15 min)
Výstup bloku: jedním příkazem běží WordPress s databází a správcem databáze.
Proč compose (2 min)
docker run pro tři propojené kontejnery znamená dlouhé příkazy, které nikdo nezná zpaměti. Compose popíše vše v souboru, který lze verzovat v Gitu.
Soubor compose.yml (5 min)
Vytvořit složku wp-stack a v ní soubor compose.yml:
services:
db:
image: mariadb:11
restart: unless-stopped
environment:
MARIADB_DATABASE: wordpress
MARIADB_USER: wp
MARIADB_PASSWORD: ${DB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql
adminer:
image: adminer
restart: unless-stopped
ports:
- "8081:8080"
wordpress:
image: wordpress:latest
restart: unless-stopped
depends_on:
- db
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
Vedle něj soubor .env (hesla nejsou v compose.yml):
DB_PASSWORD=zmen-me-heslo
DB_ROOT_PASSWORD=zmen-me-root-heslo
Vysvětlit:
services= kontejnery,dbje zároveň síťový název (WordPress se k databázi připojuje nadb),volumes= data přežijí smazání kontejneru,${DB_PASSWORD}se načte ze souboru.env, bližší vysvětlení v bloku .gitignore a .env.
Spuštění (5 min)
docker compose up -d
docker compose ps
docker compose logs -f wordpress
- WordPress: http://localhost:8080 (projít instalaci),
- Adminer: http://localhost:8081 (server
db, uživatelwp, heslo z.env, databázewordpress).
Úklid a ověření perzistence (3 min)
docker compose down # smaže kontejnery, data zůstanou
docker compose up -d # WordPress je zase tam, i s obsahem
docker compose down -v # smaže i volumes (data)
Ukázat rozdíl down versus down -v. To je nejdůležitější poznatek bloku.
Poznámky pro lektora
- Port 8080 a 8081 musí být volné. Pokud ne, upravit mapování.
- První start databáze trvá pár sekund, WordPress může krátce hlásit chybu připojení. Počkat a obnovit.
- Pro blok Traefik nechat tento stack stát.