Dodávaný docker compose.yaml je rozdelený na tri časti:
- x-service-templates: Obsahuje šablóny D2000 služieb (kontajnerov/procesov)
- services: Obsahuje definície samotných služieb.
- secrets: Obsahuje zoznam súborov s heslami, ktoré sú mapované do kontajnerov.
V súbore sa využíva interpolácia .env súboru.
Šablony služieb
Šablóna d2-service je základná šablóna D2000 procesu, kde je potrebné v sekcii volumes definovať mapovanie vybraných adresárov v kontajneri na perzistentné úložisko. Ďalej, v sekcii environment je potrebné definovať časové pásmo v premennej TZ (zoznam časových pásiem), inak celý kontajner pobeží v časovom pásme UTC. Táto sekcia definuje spoločné premenné prostredia pre kontajnery vychádzajúce z tejto šablóny. Okrem premennej TZ je tu možné podľa potreby doplniť ďalšie premenné.
Šablóna d2-service-depends_on-knl vychádza zo šablóny d2-service a definuje závislosť behu služby na službe d2-knl, ktorá reprezentuje proces D2000 server. Služba vychádzajúca z tejto šablóny teda bude naštartovaná až keď beži D2000 server a hlási sa ako "healty".
Definície služieb
Každý D2000 process je reprezenovaný jednou službou v docker compose. Preddefinované názvoslovie služieb vychádza z názvu D2000 procesu s malými písmenami: d2-<prípona procesu>-<meno procesu>. Službe sa definuje image, ktorý má byť použitý na štart kontajneru a parametre štartovaného procesu (atribút command). Šablóna, z ktorej služba vychádza, je učená syntaxou <<: <*názov šablóny>. Kompletný popis syntaxe je možné nájsť v dokumentácii fragmentov.
Pre procesy, ktoré otvárajú porty, je potrebné ich vymenovať v atribútoch expose a ports. Takýmto procesom je možné definovať aj jednoduchý health check kontrolou otvorenosti daného portu.
healthcheck: # Overuje pripojenie na port 3119 test: [ "CMD", "/bin/bash", "-c", "(echo -n> /dev/tcp/127.0.0.1/3119) &> /dev/null" ] start_period: 2m # Prve 2 minúty od štartu kontajnera skúša každých 5 (start_interval) sekúnd, až kým neuspeje - služba je healthy. start_interval: 5s interval: 1m # Potom kontroluje každú minútu retries: 1 # a už pri prvom zlyhaní je "unhealthy".
Procesom vyžadujúcim špeciálne povolenia capabilities sa tieto zadávajú atribútom cap_add.
Špeciálnou službou je inicializačný kontajner d2-init, ktorý ako jediný zo služieb nemá povolený automatický reštart, pretože má