Dockerfile ano/ne

Kontenerizace je trend. Dockerfile je defacto popis instalace, takze nahrazuje cast README. Umoznuje i deploy na dnes standardni deployment clustery (napr. k8s), coz rapidne snizuje narocnost nasazeni.

Prepis zo Slack-u, povodne odpoved na “duvody proc nechtit Docker(file)?”:

Presnejsie preco nevyzadovat - pretoze to nepomoze kvalite. Docker nie je silver-bullet a riesi iba cast problemu.

Co pouzivame momentalne (Nix / NixOS) je silnejsie riesenie, zahrna packaging, config management a deployment, umoznuje nam popisat celu infra ako kod. Mrkni na https://nixos.org/ - dole v Examples su Minimal docker images a Declarative Cloud Images (EC2)

Porovnavat to s Docker-om (o co sa uz Lada snazil kusok) je kusok take ako porovnavat hrusky s jablkami (Docker image vieme pomocou Nix-u buildnut a vdaka NixOS modulu deklarativne deploynut (aj 3rd party images)).

O podobnu vec ako popisujes v modularni urad sa v podstate uz nejaku dobu snazime - projekt om_deployment - https://gitlab.com/otevrenamesta/otevrenamesta-cz-configuration/ (pre predstavu si mrkni zlozky machines a modules).

Keby si vymenil v diagrame docker za kontajner (alebo VM) tak to pekne splna definiciu, momentalne bezime v LXC kontajneroch, v ktorych v niektorych pripadoch bezi libvirt a plna virtualizacia alebo docker (discourse, dsw2?). Co sa tym snazim povedat je, ze sa jedna o flexibilne riesenie, ktore nam umoznuje deploy na bare-metal, VMs, kontajnery, docker, EC2, rozne virtualizacne tech (mame vyskusane napr. VSphere na urade v Brne, kde sme pokusne nasadzovali CKAN).

Taktiez netvrdim, ze Dockerfile v projekte byt nema, ak to vyvojari preferuju tak kludne - deploy si vieme ohnut pre nase potreby relativne bez problemov (obcas sa Dockerfile hodi ako instrukcie miesto INSTALLATION.md).

Preco nie Docker(file) by som povedal, ze naroky na infrastrukturu, potrebujes (idealne automaticky) buildit obrazy (vlastny hub?), pouzit dalsi nastroj na config manazment (ansible, salt, helm?), cim veci testovat, kde ich bezat (nie kazdy bezi docker natoz k8s), na akom distre staviame?

Dockerfile moc nevypoveda o tom ako su veci urobene - bezi service ako root, vsetko v jednom ct? By si potreboval dalsie guidelines.

V pripade vacsich deploymentov, je potrebne riesit big-picture takeho systemu - veci ako monitoring, centralizovane logovanie, updates, certifikaty.

2 Likes

Build dela https://hub.docker.com/ ktery je automaticky propojitelny s velkyma code hostovacima servisama. Pro public repos je zdarma.

Provozují Otevřená města, z. s., server poskytuje vpsFree.cz, z.s.