Hajókázás Dockerrel 2. rész: Evezőcsapások

Az előző részben elkészítettük a Docker környezetünket, és elkészítettünk egy nagyon egyszerű Dockerfile-t, ami még nem csinált semmi hasznosat, csupán kiindulópontként szolgált. Haladjunk néhány evezőcsapással tovább, bővítsük ki a Dockerfile-unkat és legyen az a célunk, hogy egy Dockertárolóban (container-ben) el tudjunk indítani egy egyszerű webszervert, amely már HTTP kiszolgálásra képes.

Elindulunk

Mielőtt folytatnánk a munkát újra életre kell kelteni a Dockeres környezetünket. Adjuk ki tehát a már ismert parancsokat:

Indítsuk el a docker hoszt-ot (“docker engine”-ként is szokták emlegetni):

Tegyük a környezeti változókat elérhetővé, hogy parancssorból folytatni tudjuk a munkát:

Ellenőrizzük le, hogy minden a tervek szerint elindult és környezetünk készen áll:

Kiegészítjük a Dockerfile-t

Ha minden rendben (az elmúlt részben kapott válaszokat kapjuk a Dockertől), akkor lássunk is neki. Kedvenc szerkesztőnkkel nyissuk meg a korábban elkészített Dockerfile-unkat, majd egészítsük ki a file-t az alábbiakkal:

image02

Nézzük sorról sorra. Vegyünk egy alap Ubuntu-t:

Adjuk meg a kötelező “szerzőt”:

Frissítsük a csomagjainkat:

Telepítsük fel a szükséges kiegészítő csomagokat:

Telepítsünk egy Nginx-et, ez lesz a web-kiszolgálónk:

Távolítsuk el az alapértelmezett konfigurációs file-ját, hiszen egy sajátot írunk majd:

…és itt jön egy hatalmas trükk: a helyi file-rendszerünkből adjunk a Docker-ben futó Nginx-hez egy lokális konfigurációs file-t:

vagyis, a hoszt operációs rendszerünkben a Dockerfile nevű file mellé majd létrehozunk egy nginx.conf nevű file-t és ezt hozzáadjuk (“ADD”) a docker container-en belül(!) lévő /etc/ mappához.

Állítsuk be az Nginx-et úgy, hogy az előtérben (foreground) fusson:

Nyissuk meg a container-en a 80-as portot a HTTP kiszolgáláshoz:

És végül indítsuk el az Nginx-et (a container-en belül):

Elkészítjük az új image-et

Ha mindez megvan, akkor a fenti Dockerfile alapján elkészíthetjük új image-ünket:

Vajon látjuk a listában?

Vajon fut?

Elkészítjük az Nginx konfigurációs file-ját

Remek. Viszont ezzel még nem vagyunk készen, még el kell készítenünk a lokális nginx.conf file-t. Íme:

…majd tegyük bele az alábbi kód-részletet:

A file-unk ezek után így néz ki:

image07

A fenti konfigurációs részlet a lehető legegyszerűbb beállításokat tartalmazza, vagyis azt, ha a szerverünkön az alapértelezett útvonalat (/) meghívjuk, akkor adjon vissza egy 200 OK státusz kódot. Ennyi.

Teszteljük le az elkészült konfigurációt

Indítsunk el az image-ünkből egy példányt (egy container-t), és egyúttal nyissuk is ki a 80-as portot:

Nézzük meg, fut-e a container-ünk:

Igen, ott látszik a listában:

image06

Küldjünk a webszervernek egy kérést:

Ha minden jól megy, akkor a visszatérő fejlécben egy 200-as OK kódot kapunk vissza. Huh, készen is vagyunk.

Mi tanultunk ebből a példából?

Az egyik legfontosabb, hogy a container-en belülre el tudunk helyezni lokális file-okat, gyakorlatilag hozzá tudjuk adni (“ADD”) a file-okat egy-egy “belső” útvonalhoz.

Parancsokat is ki tudunk adni a container-en belül a CMD előtaggal.

Erre a két lehetőségre már számos bonyolultabb lépést is ráépítehtünk. De erről bővebben majd a következő részben lesz szó.

Állítsuk meg futó container-ünket, és a már ismert módon állítsuk le a Docker hosztot.