V Drivetu jsme začali používat Docker, ale tak trochu netradičně. Používáme ho totiž (zatím) jen na externí závislosti (Rabbit, Elastic, Cerebro, Kibana) a PHP + MariaDB máme stále nainstalované standardně.
Výhodou je, že takhle si Docker vyzkoušíme relativně bez rizika. Zjistíme, jak se chová, jestli všem funguje a podobně. Zároveň už nám bude rovnou přinášet hodnotu tím, že budeme mít všichni stejné verze a konfiguraci závislostí.
Bylo by cool mít v Dockeru všechno, ale tipuji, že zatím by nám to práci spíš přidělávalo, než šetřilo. Už třeba kvůli pomalému filesystému sdílených složek z Windows nebo z Macu. Každopádně uvidíme v budoucnu - mít celé prostředí připravené bez nutnosti instalace a konfigurace čehokoliv je lákavá představa.
Instalace Dockeru (na Windows)
- Musíte mít Windows 10 Pro (v Home není Hyper-V)
- V Turn Windows features on or off povolte Hyper-V
- Stáhněte si Docker
- Nainstalujte
- pomocí
docker version
ověřte, že máte nainstalováno správně
Nastavení RabbitMQ v Dockeru
Pro nastavení používám Docker Compose, který umožňuje v jednom konfiguračním souboru definovat více služeb, které lze potom najednou spustit.
V rootu projektu vytvoříme soubor docker-compose.yml
s následujícím obsahem (vysvětlím níže):
version: '3'
services:
rabbitmq:
image: rabbitmq:3.6.10-management
hostname: driveto-rabbit
ports:
- 5672:5672
- 15672:15672
-
version: '3'
na začátku souboru je verze konfiguračního souboru prodocker-compose
. -
v
services
jsem definoval službu pojmenovanourabbitmq
-
použije se pro ni image
rabbitmq
z Docker Hubu ve verzi3.6.10-management
. Verzi by šlo podobně jako v Composeru definovat volněji, třeba jen3.6
(nebo dokoncelatest
). Jenže tím se připravíme o výhodu toho, že všichni používají stejné prostředí, takže se doporučuji držet co nejpřesnější specifikace verze.-management
v určení verze znamená, že jde o image, který obsahuje předinstalovaný Management plugin - webové rozhraní pro monitoring a konfiguraci RabbitMQ. -
hostname
je důležité nastavit, protože ho RabbitMQ používá jako identifikátor při ukládání dat (je to popsané v dokumentaci na Docker Hubu v sekci How to use this image) -
ports
definují mapování portů -HOST:CONTAINER
- první je port na hostitelským systému, druhý je port kontejneru. V ukázce mám přesměrované dva porty:5672
pro komunikaci s RabbitMQ a15672
pro webové rozhraní.
Spuštění RabbitMQ
- v adresáři, kde je
docker-compose.yml
zavolámedocker-compose up
- ten stáhne potřebné image a nastartuje kontejner s Rabbitem
- RabbitMQ má vytvořeného uživatele
guest
s heslemguest
a výchozí vhost/
- Webové rozhraní je přístupné na
http://localhost:15672
docker-compose up
můžete spouštět v detached režimu přepínačem -d
. Poběží pak na pozadí a nebude nutné nechat otevřenou konzoli. Logy z kontejnerů pak zobrazíte pomocí docker-compose logs
. Na Windows používám jako konzoli cmder, kde si docker-compose
nechávám běžet v jednom tabu na popředí, abych logy viděl průběžně.
Závěrem
V článku ukázal, že začít s Dockerem není vůbec složité a zároveň že jde začít i jinak než zdockerizováním celé aplikace. Používáte Docker? Pro celou aplikaci nebo jen podobně jako my?
Pokud si budete Docker podle článku nastavovat a něco vám nebude fungovat, tak mi napište do komentářů nebo do kanálu #docker
na Slacku Pehapkaři.cz.