Docker Composeje nástroj, který vám umožňuje definovat a organizovat vícekontejnerové aplikace Docker. Ke konfiguraci kontejnerů, sítí a svazků aplikace používá soubor YAML.
Compose lze použít pro různé účely. Nasazení aplikací s jedním hostitelem, automatizované testování a místní vývoj jsou nejoblíbenější případy použití Docker Compose.
Tento tutoriál vás provede procesem instalace nejnovější verze Docker Compose na Debian 9. Prozkoumáme také základní koncepty a příkazy Docker Compose.
Předpoklady #
Než budete pokračovat v tomto kurzu, ujistěte se, že jste splnili následující předpoklady:
- Přihlášeni jako uživatel s právy sudo.
- Mějte na svém počítači Debian 9 nainstalovaný Docker.
Instalovat Docker Compose na Debian #
Instalační balíček Docker Compose je k dispozici v oficiálních repozitářích Debianu 9, ale nemusí se vždy jednat o nejnovější verzi. Doporučený přístup je nainstalovat Docker Compose z úložiště GitHub Docker.
V době psaní tohoto článku je nejnovější stabilní verze Docker Compose verze 1.23.1
. Před stažením binárního souboru Compose navštivte stránku vydání úložiště Compose na GitHuband a zkontrolujte, zda není k dispozici nová verze ke stažení.
Chcete-li nainstalovat nejnovější verzi Docker Compose na Debian 9, proveďte následující kroky:
-
Začněte stažením binárního souboru Docker Compose do
/usr/local/bin
adresář pomocí následujícíhocurl
příkaz:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
Po dokončení stahování udělte spustitelnému souboru oprávnění k vytvoření binárního souboru:
sudo chmod +x /usr/local/bin/docker-compose
-
Ověřte instalaci zadáním:
docker-compose --version
Výstup bude vypadat nějak takto:
docker-compose version 1.23.1, build b02f1306
Začínáme s Docker Compose #
V této části si ukážeme, jak používat Docker Compose ke správě zásobníku WordPress na vašem počítači Debian 9.
Začněte vytvořením adresáře pro projekt a přepnutím do něj:
mkdir wordpress_app
cd wordpress_app
Otevřete textový editor a vytvořte název souboru s názvem docker-compose.yml
v adresáři projektu:
nano docker-compose.yml
Vložte následující obsah:
docker-compose.ymlversion: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Co tedy výše uvedený kód dělá?
V prvním řádku zadáváme verzi souboru Compose. Existuje několik různých verzí formátu souboru Compose s podporou konkrétních vydání Dockeru.
Dále definujeme dvě služby, db
a wordpress
. Každá služba spouští jeden obrázek a při spuštění docker-compose vytvoří samostatný kontejner.
db
služba:
- Používá
mysql:5.7
obraz. Pokud obrázek není ve vašem systému přítomen, Compose jej stáhne z veřejného úložiště Docker Hub. - Používá restart
always
zásada, která dá kontejneru pokyn, aby se vždy restartoval. - Vytvoří pojmenovaný svazek
db_data
pro zachování databáze. - Definuje proměnné prostředí pro
mysql:5.7
obrázek.
wordpress
služba:
- Používá
wordpress
obraz. Pokud obrázek není ve vašem systému přítomen, Compose jej stáhne z veřejného úložiště Docker Hub. - Používá restart
always
zásada, která dá kontejneru pokyn, aby se vždy restartoval. - Připojí
wp_data
adresář na hostiteli do/var/lib/mysql
uvnitř kontejneru. - Přesměruje odhalený port 80 na kontejneru na port 8080 na hostitelském počítači.
- Definuje proměnné prostředí pro
wordpress
obrázek. depends_on
instrukce definuje závislost mezi dvěma službami. V tomto příkladudb
bude spuštěn předwordpress
.
Z adresáře projektu spusťte aplikaci WordPress spuštěním následujícího příkazu:
docker-compose up
Výstup by měl vypadat nějak takto:
...
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002748 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.12 configured -- resuming normal operations
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002912 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose stáhne oba obrázky, spustí dva kontejnery a vytvoří wp_data
adresář v adresáři vašeho projektu.
Zadejte http://0.0.0.0:8080/
ve vašem prohlížeči a uvidíte instalační obrazovku Wordpressu.
V tuto chvíli je aplikace WordPress spuštěna a můžete začít pracovat na svém motivu nebo pluginu.
Chcete-li zastavit psaní, stiskněte CTRL+C
.
Psaní můžete také spustit v odděleném režimu předáním -d
vlajka.
docker-compose up -d
Pro kontrolu běžících služeb použijte ps
možnost:
docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
wordpress_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Když Compose běží v odděleném režimu pro zastavení používání služeb:
docker-compose stop
Pokud chcete kontejnery úplně odstranit, použijte down
možnost:
docker-compose down
Předání --volumes
přepínač také odstraní objemy dat:
docker-compose down --volumes
Odinstalace Docker Compose #
Pokud potřebujete odinstalovat Docker Compose, můžete binární soubor jednoduše odebrat zadáním:
sudo rm /usr/local/bin/docker-compose