Přejít k obsahu Přejít k hlavnímu menu

SUPERKODERS

Proč používáme Docker

Za 5 minut hotovo: S Dockerem je rozjetí projektu rychlejší než uvaření kávy

SUPERKODERS tým 20. února 2025 5 min. čtení

Docker se stal pro nás v SUPERKODERS nepostradatelným nástrojem. Umožňuje nám pracovat efektivněji, šetří nám čas a usnadňuje spolupráci. V tomto článku vám prozradíme, jak nám Docker usnadňuje vývoj.

Co je Docker a proč ho používáme?

Docker je nástroj, který nám umožňuje vytvořit jednotné vývojové prostředí pro všechny projekty. Nemusíme řešit problémy s různými verzemi PHP, NPM nebo třeba operačními systémy. Děláme různě na MacOS, Windows i Linuxech. Všem z nás správně nastavený Docker poskytne identické prostředí, což nám urychluje vývoj, debugování chyb a celkově usnadňuje spolupráci.

Problémy, které nám Docker vyřešil

Představte si situaci, kdy pracujete na několika projektech, z nichž každý vyžaduje jiné verze PHP, Node.js nebo NPM.

Udržet si ve všech verzích pořádek a zajistit, aby vše fungovalo, může být noční můra. A přesně tak to je. I když se snažíme držet aplikace v nejnovějších verzích, nejde to vždy 100% stíhat. S Dockerem nám tyto problémy zmizely. Vytvoříme si kontejnery s potřebnými verzemi a nastavením pro daný projekt a máme jistotu, že vše bude fungovat tak, jak má.

Dokážeme si při buildu projektu stáhnout aktuální databázi z testovacího serveru a importovat do Docker databáze.

Takto nastaveným flow nám odpadají časté požadavky kolegů kodérů o pomoc při rozjezdu projektu. Nyní stačí říct magické dvě slova: Použij Docker!

Jak fungujeme v každodenním režimu?

Pomocí Dockeru je spuštění projektu hračka. Nový kolega si může projekt rozběhnut během pěti minut.

Základní příkaz docker compose up -d a projekt běží. Jednou to nakonfigurujeme a pak už jen spouštíme. To nám šetří spoustu času a energie, kterou můžeme věnovat samotnému vývoji.

Pokud potřebujeme spustit více procesu za sebou (composer, build FE, stažení DB, plnění elastic search), vytvoříme si Make příkaz v rámci Makefile, který máme víceméně unifikovány pro naše projekty. Každý si pak v projektu přidá specifické commandy a pracuje s nimi.

Jak může vypadat rozjetí projektu bez Dockeru

  1. Čtení readme či dokumentace projektu (pokud je)
  2. Zjišťování verze PHP, Node, NPM
  3. Nastavení přístupu do databáze
  4. Spuštění migrací / naplnění dummy daty / hledání databáze z testovacího serveru
  5. Spuštění instalace composeru
    • nemám správnou verzi PHP
      • stahuju do klienta typu MAMP správnou verzi
      • řeším jak mít v CLI tu správnou verzi
      • instaluji závislosti
  6. Nastavuji lokální konfiguraci
    • sháním ji po zkušenějších kolezích
    • hádám, co kde má být
    • pořád něco nefunguje
  7. Build frontendu
    • potřebuju Node.js xx.xx
    • instaluji NVM, všechny verze co potřebuju
    • hledám způsoby, jak na to
    • neprochází build, protože nějaký problém není ještě na novém MacOS vyřešen…
  8. Nějak to běží, zabralo to hodinu až dvě, nevím jestli mi to vše běží správně, ale to zjistím později
  9. Jdu pracovat!

Jak vypadá náš “Docker stack”

  • php container
  • frontend container - npm, node, gulp, etc..
  • db container - většinou mariadb
  • elastic search container
  • redis container
  • mail tester container

Jaké jsme si třeba připravili commandy

  • make start
    • stažení DB pomocí SSH
    • docker compose
    • instalace závislosti composer i npm
    • vyřešení cache
    • naplnění elastic search
  • make up - každodenní command pro rychlý start projektu
    • start containeru
  • make migrate
  • make docker-start
    • pro první start projektu - nastavení config env souborů
    • pak totožné co make start

Docker je výzva, ale stojí to za to

Nastavit aktuální proces zabralo nějakou chvíli a iterace (a stále není konečný), ladíme jej i nadále, ale ovoce to nese okamžitě. Už není třeba řešit MAMP nebo lokální PHP či databáze.

Výzvy, které je třeba vyřešit jsou, jak si předávat rozumně data v DB, pokud vyvíjí více lidí najednou. Částečné řešení tohoto máme implementováno, ale může to vytvořit více problémů než obyčejná lidská domluva.

Docker je pro nás klíčovou technologií pro vývoj a věříme, že nám bude pomáhat i nadále. Těšíme se, co nám Docker v budoucnu přinese.

Chceš se bavit s námi?

Hledáme do týmu další zapálené vývojáře.
Mrkněte na kariéru a napište Michalovi.

Michal Matuška | CTO +420 737 770 642

Michal Matuška