Docker je kontejnerizační platforma, která vám umožňuje rychle vytvářet, testovat a nasazovat aplikace jako přenosné, soběstačné kontejnery, které lze spustit prakticky kdekoli.
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 vysvětluje, jak nainstalovat nejnovější verzi Docker Compose na Debian 10, Buster. Prozkoumáme také základní koncepty a příkazy Docker Compose.
Předpoklady #
Než budete pokračovat, ujistěte se, že jste splnili následující předpoklady:
- Přihlášeni jako uživatel s právy sudo.
- Na svém počítači Debian 10 máte nainstalovaný Docker.
Instalace Docker Compose na Debian 10 #
Instalační balíček Docker Compose je k dispozici v oficiálních repozitářích Debianu 10, 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í.
K instalaci nejnovější verze Docker Compose na Debian 10 použijte následující kroky:
-
Stáhněte si binární soubor Docker Compose do
/usr/local/bin
adresář swget
nebocurl
: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
-
Použijte
chmod
aby byl binární soubor Compose spustitelný:sudo chmod +x /usr/local/bin/docker-compose
-
Pro ověření instalace použijte následující příkaz, který vytiskne novou verzi:
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 nastavit místní vývojové prostředí WordPress pomocí Docker Compose.
Vytvořte adresář pro projekt a přejděte 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
:
nano docker-compose.yml
Vložte následující obsah:
docker-compose.ymlversion: '3.7'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
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 si vysvětlit kód řádek po řádku
První řádek určuje 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 vytvoří při spuštění Docker Compose samostatný kontejner.
db
služba:
- Obrázek je nastaven na
mysql:8.0
obraz. Pokud obrázek není přítomen, Compose jej stáhne z veřejného úložiště Docker Hub. Řádek začínajícícommand
přepíše výchozí příkaz. restart: always
zásada přikazuje Compose restartovat kontejner, pokud selže.- Kontejner bude používat pojmenovaný svazek
db_data
pro zachování databáze. - Definuje proměnné prostředí pro
mysql:8.0
obrázek.
wordpress
služba:
- Používá
wordpress
obrázek. - Připojí
wp_data
adresář na hostiteli do/var/lib/mysql
uvnitř kontejneru. - Přeposílá vystavený port
80
na kontejner na port8080
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 zásobník WordPress spuštěním následujícího příkazu:
docker-compose up
Výstup by měl vypadat nějak takto:
...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...
Docker Compose stáhne obrázky, spustí 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 standardní instalační obrazovku WordPress.
V tuto chvíli je aplikace WordPress spuštěna a můžete na ní začít pracovat.
Chcete-li zastavit psaní, stiskněte CTRL+C
.
Skládání můžete také spustit v odděleném režimu pomocí -d
možnost:
docker-compose up -d
Chcete-li zobrazit spuštěné kontejnery dockeru, použijte následující příkaz:
docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99946702ac7e docker-entrypoint.sh --def ... Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1_a428d8408817 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Chcete-li zastavit služby, když Compose běží v odděleném režimu, použijte:
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