Docker Composeje nástroj, který vám umožňuje definovat a spravovat vícekontejnerové aplikace Docker. Ke konfiguraci služeb, 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.
V tomto tutoriálu vám ukážeme, jak nainstalovat nejnovější verzi Docker Compose na Ubuntu 18.04 a prozkoumat základní koncepty a příkazy Docker Compose.
Stejné pokyny platí pro Ubuntu 16.04 a jakoukoli jinou distribuci založenou na Debianu, včetně Debianu, Linux Mint a Elementary OS.
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.
- Nainstalujte Docker podle pokynů v části Jak nainstalovat a používat Docker na Ubuntu 18.04.
Instalovat Docker Compose na Ubuntu #
Instalační balíček Docker Compose je k dispozici v oficiálních repozitářích Ubuntu 18.04, ale nemusí to být vždy nejnovější verze. 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 Docker Compose na Ubuntu 18.04, postupujte takto:
-
Stáhněte si binární soubor Docker Compose do
/usr/local/bin
adresář s následujícímcurl
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í použijte oprávnění ke spuštění pro binární soubor Compose:
sudo chmod +x /usr/local/bin/docker-compose
-
Ověřte instalaci spuštěním následujícího příkazu, který zobrazí verzi Compose:
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 k nastavení vícekontejnerové aplikace WordPress na Ubuntu 18.04.
Začněte vytvořením projektového adresáře a navigací do něj:
mkdir my_app
cd my_app
Spusťte 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:
Pojďme analyzovat kód řádek po řádku.
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í v systému přítomen, bude stažen 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
aby databáze byla trvalá. - 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 | [Sun Sep 23 22:31:43.499055 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sun Sep 23 22:31:43.499796 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 tomto okamžiku 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
----------------------------------------------------------------------------------
my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
my_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 z jakéhokoli důvodu chcete Docker Compose odinstalovat, můžete binární soubor jednoduše odebrat zadáním:
sudo rm /usr/local/bin/docker-compose