Príklad nasadenia D2000 aplikácie cez docker compose pozostáva zo súborov definujúcich premenné (.env a db.env) heslá (db_admin_password.txt, eda_password.txt), licenčný súbor D2000 (LicenceRun.code) a samotného compose.yaml.
Súbor .env sa využíva na interpoláciu - v ňom definované premenné je možné použiť v compose.yaml. Okrem toho sa premenné z tohto súboru spolu s premennými definovanými v db.env posielajú ako premenné prostredia do inicializačného kontajnera. Ich význam je popísaný v dokumentácii inicializačného kontajnera D2000.
| Blok kódu | ||||
|---|---|---|---|---|
| ||||
D2APP=docker_compose # Názov vytváranej aplikácie
D2APPDESC=Docker D2000 application # Popis vytváranej aplikácie
D2ARCHIVES=self # Voliteľne, čiarkou oddelený zoznam archívov
#D2REDUNDANT_KERNEL=a:2 # Voliteľne, názov a priorita redundantného kernela
#D2REDUNDANT_KERNELS=a:d2-knl-a,b:d2-knl-b # Voliteľne, čiarkou oddelený zoznam redundantných kernelov
D2TAG=v26.00.082 # Tag/verzia použitých image-ov
#EDA_GROUP=EDA # Voliteľne, názov EDA server skupiny
#EDA_USER=docker_compose_eda # Voliteľne, názov EDA databázového používateľa
IMAGE_REGISTRY=registry.ipesoft.com # Adresa registra image-ov
TZ=Europe/Bratislava # Predvolené časové pásmo
WDFREQ=60 # Frekvencia watchdog-ov v sekundách |
| Blok kódu | ||||
|---|---|---|---|---|
| ||||
D2APPDB=postgres # Voliteľne, názov existujúcej databázy, ktorá bude využívaná ako aplikačná
PGHOST=127.0.0.1 # Adresa bežiaceho PostgreSQL servera
PGPORT=5432 # Port bežiaceho PostgreSQL servera
PGUSER=postgres # Meno databázového administrátora |
Súbor compose.yaml pozostáva z troch sekcií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 zdraví služby 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".
...
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 kontajnera 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.
...
Špeciálnou službou je inicializačný kontajner d2-init, ktorý ako jediný zo služieb nemá povolený automatický reštart, pretože má sa má vykonať len raz, pri štarte. Do svojich premenných prostredia vkladá premenné definované v .env súbore aj v db.env. Okrem toho využíva aj heslá definované v secret súboroch.
Definície hesiel
Heslá sú definované v sekcii secrets, kde sú načítavané zo súborov umiestených v rovnakom adresári ako samotný compose.yaml. Medzi preddefinované secrets patrí licenčný súbor D2000 (LicenceRun.code), heslo databázového administrátora (db_admin_password.txt) a voliteľne heslo EDA používateľa (eda_password.txt). Použitie hesla kontajnerom sa definuje v sekcii secrets príslušnej definíce služby. Inicializačný kontajner potrebuje všetky heslá. Jediný proces D2000 používajúci heslo zo secret (eda_password) je EDA server, ktorému sa súbor s heslom odovzdáva ako štartovací parameter.
| Blok kódu | ||||
|---|---|---|---|---|
| ||||
# EDA server využíva secret eda_password mapovaný ako súbor v kontajneri /run/secrets/eda_password
d2-eds-self:
image: ${IMAGE_REGISTRY}/ipesoft/d2/edaserver_odbc:${D2TAG}
<<: *d2-service-depends_on-knl
command: [ "/C${D2APP}", "/Sd2-knl", "/F${WDFREQ}", "/EDAG${EDA_GROUP}", "/EDAP3121", "/EDADSN${D2APP}.APPDB", "/EDAUSR${EDA_USER}", "/EDAFPWD/run/secrets/eda_password" ]
secrets:
- eda_password
# ... |