0 votes
Kontejnerizace s Dockerem vypadá jednoduše: napíšeš Dockerfile, spustíš build a aplikace běží. Většina začátečníků ale skončí u prvního problému, protože nepochopí, jak Docker skutečně funguje. Kontejner není virtuální stroj. Je to izolovaný proces na hostitelském jádru. Z toho plyne první pravidlo: v kontejneru neběží init systém, žádný systemd, žádné trvalé služby. Proces, který spustíš, musí zůstat v popředí. Jakmile skončí, kontejner skončí taky.

Sítě mezi kontejnery řeš vlastní bridge sítí. Kontejnery na stejné síti se vidí přes názvy služeb. Nepoužívej IP adresy, ty se po restartu mění. Pozor na pořadí startu: Docker nespouští kontejnery v závislosti na sobě. Aplikace musí umět čekat na databázi, nebo použij healthcheck a depends_on s podmínkou. Bez toho aplikace spadne při startu, protože databáze ještě neběží.

Trvalá data a sítě: kde kontejnery selhávají Data v kontejneru jsou efemérní. Jakmile kontejner smažeš, data zmizí. Pro databáze, nahrané soubory nebo logy vždy použij volume nebo bind mount. Bind mount znamená, že připojíš složku z hostitele. Volume spravuje Docker a je přenosnější. Další častá chyba je vystavení portu bez potřeby. Port v Dockerfile pouze dokumentuje, ale skutečné publikování dělá až příkaz -p při spuštění. Pokud mapuješ port na všechny rozhraní, aplikace je přístupná z celé sítě. Pro lokální vývoj stačí 127.0.0.1:8080:80.

Poslední pravidlo se týká komunikace. Větve, které na sebe navazují, držte krátké a slučujte v pořadí, v jakém vznikaly. Pokud dvě větve mění stejné místo, domluvte se předem, kdo sloučí první, a teprve pak upravte tu druhou. Větvení není jen technická operace, ale dohoda mezi lidmi. Když pravidla platí pro všechny stejně, přestane být slučování stres a stane se rutinou.

Základní práce začíná u Dockerfile. Každý příkaz vytváří vrstvu. Čím více vrstev, tím větší image a pomalejší build. Slouč příkazy pro instalaci balíčků do jednoho RUN a po instalaci vždy odstraň mezipaměť. Typická chyba je kopírování celého projektu před instalací závislostí. Tím se při každé změně kódu invaliduje cache a instalace běží znovu. Řešení je jednoduché: nejdřív zkopíruj soubor se závislostmi, nainstaluj je, a teprve potom zbytek kódu.

Kód aplikace a její konfigurace mají odlišný životní cyklus, jinak se mění a jinak se nasazují. Kód prochází code review, testy a vydává se ve verzích. Konfigurace se mění podle prostředí, tajných klíčů a provozních potřeb, často bez jakékoli souvislosti s vydáním. Když obojí leží v jednom repozitáři, každá změna konfigurace znečistí historii kódu a každý commit do kódu nutí ověřovat, zda nezměnil i konfiguraci. Oddělení není dogma, ale řeší konkrétní problémy, které dřív nebo později narazí.

Poslední častá chyba je bezpečnost. Kontejner běží jako root, pokud ho nepřepneš na jiného uživatele. Přidej USER a nevystavuj zbytečné nástroje. Image stavěj z konkrétních tagů, ne z latest. latest se může změnit a rozbít build. Také neukládej tajemství do image. Použij proměnné prostředí nebo secrets. Docker není magie, jen izolace. Kdo to pochopí, vyhne se většině problémů.

Po úspěšném rollbacku nezapomeňte provést analýzu příčin. Zjistěte, proč se chyba nedostala do testů, a doplňte je. Opravte kód, znovu otestujte a teprve poté nasaďte. Celý proces rollbacku by měl být zdokumentovaný a procvičený. Čím méně kroků a čím více automatizace, tím menší je riziko další chyby. Verzování a rollback nejsou známkou slabosti, ale profesionality. Bez nich se každý incident mění v dlouhou odstávku.

Podpis nestačí, ověřujte i obsah Mnoho vývojářů udělá chybu, že token pouze dekóduje a věří jeho obsahu. To je zásadní bezpečnostní mezera. Vždy je nutné ověřit podpis pomocí tajného klíče nebo veřejného klíče, pokud používáte asymetrickou kryptografii. Dále zkontrolujte, zda token nevypršel – to zajistí pole exp. Pokud používáte symetrický klíč, nikdy ho nedávejte do klientského kódu. U asymetrického klíče zase platí, že soukromý klíč zůstává pouze na serveru, který tokeny vydává.

Jak správně označit verzi a připravit rollback Před nasazením do produkce každou stabilní verzi označte tagem, například číslem verze. Tím získáte referenční bod, ke kterému se lze kdykoli vrátit. Rollback pak neznamená jen přepsat soubory, ale kompletně obnovit stav aplikace. Zjistěte, zda vaše změna nevyžaduje i úpravu databázového schématu nebo konfigurace. Pokud ano, připravte i reverzní migraci. V produkci vždy nasazujte z tagu, ne z aktuální vývojové větve. Zamezíte tomu, aby se do produkce dostal neotestovaný kód.image
ago by (120 points)

Your answer

Privacy: Your email address will only be used for sending these notifications.
...