Jak začít s Dockerem a kontejnery bez zbytečné teorie
Jakmile máte Docker v provozu, začněte s jednoduchým projektem. Vytvořte složku, do ní vložte soubor s názvem Dockerfile a do něj napište následující řádky: FROM node:20-alpine, WORKDIR /app, COPY . ., RUN npm install a CMD ["node", "server.js"]. Tento Dockerfile říká Dockeru, aby použil oficiální obraz Node.js, nastavil pracovní složku, zkopíroval soubory, nainstaloval závislosti a spustil server. Poté v terminálu spusťte docker build -t moje-aplikace . (tečka na konci je důležitá – označuje aktuální složku). Po úspěšném buildu spustíte kontejner příkazem docker run -p 3000:3000 moje-aplikace. Parametr -p mapuje port z kontejneru na váš počítač, takže aplikaci otevřete v prohlížeči na adrese localhost:3000.
Typické chyby začátečníků zahrnují ignorování možnosti undefined nebo null. V striktním režimu musíte s těmito hodnotami počítat. Například funkce, která vrací prvek z pole podle indexu, může vrátit undefined. Místo toho, abyste to potlačili, ošetřete to podmínkou: if (prvek) { … }. Další častou chybou je používání typu any u proměnných, které dostávají hodnoty z API. Správně si nadefinujte rozhraní pro odpověď serveru a použijte ho. Tím zajistíte, že se při změně API dozvíte o chybě hned při kompilaci, ne až za běhu.
Když už umíte JavaScript, přechod na TypeScript není skok do neznáma, ale spíš přidání bezpečnostního pásu. Základní myšlenka je jednoduchá: přidáte typy a váš kód se stane čitelnějším a méně náchylným k chybám. Než ale začnete psát první rozhraní, pochopte, že TypeScript není nový jazyk, ale nadmnožina JavaScriptu. To znamená, že každý platný JavaScript je zároveň platný TypeScript. Můžete tedy začít postupně, bez nutnosti přepisovat celý projekt najednou.
Indexy nejsou všelék a často narazíte na problém, že dotaz index nepoužije. Důvodem bývá použití funkce na sloupci v podmínce WHERE, typová konverze nebo nevhodný formát porovnání. Například dotaz WHERE DATEPART(year, created_at) = 2024 znemožní použití indexu, zatímco podmínka WHERE created_at >= '2024-01-01' AND created_at <'2025-01-01' index využije. Stejně tak porovnávání textových sloupců bez ohledu na velikost písmen zabrání indexu v práci – řešte to případně vhodným collation nastavením.
Základní test vypadá tak, že do souboru s názvem test_nazev.py napíšete funkci test_něco() a uvnitř použijete příkaz assert. Například chcete-li ověřit, že funkce secti(2, 3) vrací 5, stačí napsat assert secti(2, 3) == 5. Pytest při selhání ukáže, které hodnoty se lišily, takže nemusíte psát vlastní hlášky. Důležité je testy psát tak, aby byly nezávislé na pořadí, a proto se vyhýbejte sdíleným proměnným napříč testy. Pokud potřebujete připravit data, použijte takzvané fixture, které se definují pomocí dekorátoru @pytest.fixture a pak se předávají jako parametry funkce.
Nakonec, nenechávejte pipeline bez údržby. Pravidelně aktualizujte verze akcí a kontrolujte, zda se vaše workflow stále chová podle očekávání. Přidávejte si notifikace při selhání, ať víte o problému okamžitě. Dobrý pipeline je takový, který nevyžaduje neustálý dohled, ale když selže, řekne vám to jasně a srozumitelně.
TypeScript se nejvíc osvědčí ve větších projektech, kde je potřeba udržet přehled o datech a funkcích. I v malých projektech ale pomůže odhalit překlepy a nesmyslné operace. Nezapomeňte, že TypeScript se kompiluje do JavaScriptu, takže výsledný kód poběží všude, kde běží JavaScript. Pokud si osvojíte typové rozhraní a striktní režim, budete efektivnější a váš kód bude mít méně chyb. Začněte dnes – vezměte jeden soubor a přidejte mu typy. Uvidíte, jak rychle se to projeví.
Prvním praktickým krokem je instalace Dockeru. Na Linuxu obvykle použijete balíčkovací nástroj vaší distribuce, na Windows a macOS stáhnete instalační program z oficiálních stránek. Po instalaci si ověřte funkčnost příkazem docker --version. Hned poté si vytvořte první kontejner: docker run hello-world. Tento příkaz stáhne malý testovací obraz a spustí ho. Pokud vidíte uvítací hlášku, máte vyhráno. Nezapomeňte, že Docker na Linuxu vyžaduje práva roota – buď použijte sudo, nebo přidejte svého uživatele do skupiny docker, abyste nemuseli psát sudo pokaždé.
GitHub Actions není jen místo pro spouštění testů. Je to nástroj, který vám umožní postavit celý pipeline od pushnutí kódu až po nasazení na produkci. Klíčem k úspěchu je pochopit, že každý workflow je soubor YAML definic, které se spouštějí na základě událostí. Začněte jednoduše: vytvořte soubor v adresáři .github/workflows a definujte trigger, třeba na push do větve main. Nezapomeňte, že spouštěčem může být i pull request, schedule nebo ruční spuštění pomocí workflow_dispatch.