Ixazululiwe: isibonelo se-dockerfile

Inkinga enkulu ehlobene nesibonelo se-Dockerfile ukuthi kungenzeka ingafaneleki kuwo wonke amacala okusetshenziswa. I-Dockerfile iyisethi yemiyalo esetshenziselwa ukwakha isithombe, futhi ingenziwa ngezifiso izinhlelo zokusebenza nezimo ezahlukahlukene. Kanjalo, isibonelo se-Dockerfile kungenzeka singaqukathi imiyalo edingekayo yohlelo lwakho lokusebenza oluthile noma indawo. Ukwengeza, i-syntax ye-Dockerfile ingahluka kuye ngokuthi inguqulo ye-Docker esetshenziswayo, ngakho-ke isibonelo esivela kwenye inguqulo ingase ingasebenzi kwenye.

FROM python:3.7

WORKDIR /app

COPY requirements.txt . 
RUN pip install -r requirements.txt 
COPY . . 
EXPOSE 5000 
ENTRYPOINT ["python"] 
CMD ["app.py"]

1. “KUSUKA ku-python:3.7” - Lo mugqa ucacisa isithombe esiyisisekelo okufanele sisetshenziswe esitsheni se-Docker, kulokhu inguqulo ye-Python engu-3.7.

2. “I-WORKDIR/uhlelo lokusebenza” – Lo mugqa usetha inkomba yokusebenza yesiqukathi ku-“/app”.

3. “COPY requirements.txt .” – Lo mugqa ukopisha ifayela elinegama elithi “requirements.txt” lisuka emshinini wendawo liye kuhla lwemibhalo olusebenzayo lwesiqukathi (kulesi simo “/app”).

4. “RUN pip install -r needs.txt” – Lo mugqa usebenzisa umyalo ngaphakathi kwesiqukathi osebenzisa i-pip ukufaka wonke amaphakheji asohlwini lwe-requirements.txt endaweni yesiqukathi.

5.”KOPIA . .” - Lo mugqa ukopisha wonke amafayela namafolda asuka emshinini wakho wasendaweni uwayise ohlwini lwamanje olusebenzayo lwesitsha sakho (kulokhu "/ uhlelo lokusebenza").

6."EXPOSE 5000″ - Lo mugqa udalula imbobo engu-5000 esitsheni sakho se-Docker, uyivumela ukuthi ifinyelelwe emithonjeni engaphandle njengesiphequluli sewebhu noma ezinye izinhlelo zokusebenza ezisebenza kukhompyutha yakho noma inethiwekhi.

7.”ENTRYPOINT [“python”]” - Lo mugqa ubeka indawo yokungena yesiqukathi sakho se-Docker, okusho ukuthi uma usisebenzisa, sizokwenza ngokuzenzakalelayo noma yimuphi umyalo oshiwo lapha (kulokhu, usebenzisa iPython).

8.”CMD [“app.py”]” – Ekugcineni, lo mugqa ucacisa ukuthi imuphi umyalo okufanele wenziwe lapho usebenzisa isiqukathi sakho se-Docker (kulokhu, usebenzisa ifayela elibizwa ngokuthi app.py).

Mayelana nesiteji se-Docker

I-Docker iyinkundla enomthombo ovulekile yokwakha, ukuthumela, nokusebenzisa izinhlelo zokusebenza. Isebenzisa ubuchwepheshe beziqukathi ukupakisha izinhlelo zokusebenza ezitsheni ezingazodwa ukuze zisetshenziswe ngokushesha kunoma iyiphi isistimu. I-Docker inika amandla abathuthukisi ukuthi bakhe ngokushesha futhi basebenzise izinhlelo zokusebenza ngendlela ephephile nephumelelayo.

I-Python iwulimi lokuhlela oludumile olusetshenziswa onjiniyela abaningi ekudaleni izinhlelo zokusebenza zewebhu, amaphrojekthi wesayensi yedatha, amamodeli okufunda ngomshini, nokuningi. Nge-Docker, abathuthukisi bePython bangapakisha kalula ikhodi yabo ezitsheni eziphathwayo kuzo zonke izinhlelo nezindawo ezahlukahlukene. Lokhu kwenza kube lula ukuthuthukisa nokusebenzisa izinhlelo zokusebenza zePython kunoma iyiphi ipulatifomu noma umhlinzeki wamafu ngaphandle kokukhathazeka ngezinkinga zokuhambisana noma ukuncika. Ukwengeza, i-Docker ihlinzeka ngendlela elula yokuphatha izinguqulo eziningi zemitapo yolwazi yePython nezinhlaka ngokubhaliswa kwayo kwesithombe esakhelwe ngaphakathi. Lokhu kuvumela onjiniyela ukuthi bashintshe ngokushesha phakathi kwezinguqulo ezahlukene zelabhulali efanayo noma uhlaka ngaphandle kokuthi bazifake mathupha kusistimu ngayinye abayisebenzisayo.

Iyini i-Dockerfile

I-Dockerfile idokhumenti yombhalo equkethe yonke imiyalo umsebenzisi angayibiza kulayini womyalo ukuze ahlanganise isithombe. Isetshenziselwa ukwakha isithombe se-Docker, esingase sisetshenziselwe ukwakha iziqukathi. I-Dockerfile ngokuvamile iqukethe imiyalelo yokuthi ungalwakha futhi ulusebenzise kanjani uhlelo lokusebenza, kanye nanoma yikuphi okunye ukuncika eludingayo ukuze lusebenze kahle. Ibhalwe kusetshenziswa ulimi lokuhlela lwePython futhi ingasetshenziswa nanoma yibuphi ubuchwepheshe beziqukathi obudumile obufana neKubernetes noma i-Docker Swarm.

Ngibhala kanjani i-Dockerfile

I-Dockerfile idokhumenti yombhalo equkethe yonke imiyalo umsebenzisi angayibiza kulayini womyalo ukuze ahlanganise isithombe. Empeleni isethi yemiyalo etshela i-Docker ukuthi ungasakha kanjani isithombe sakho.

Ukubhala i-Dockerfile ku-Python, udinga ukuqala ngokucacisa isithombe esiyisisekelo ofuna ukusisebenzisa. Lokhu kungenziwa kusetshenziswa imiyalelo ethi FROM. Isibonelo, uma ubufuna ukusebenzisa Ubuntu njengesithombe sakho esiyisisekelo, ungabhala:

FROM ubuntu:latest

Okulandelayo, udinga ukufaka noma yimaphi amaphakheji adingekayo namalabhulali ohlelo lwakho lokusebenza. Lokhu kungenziwa kusetshenziswa imiyalelo ye-RUN kanye nemiyalo ye-apt-get noma ye-pip. Isibonelo, uma ufuna ukufaka i-Flask nokuncika kwayo, ungabhala:

RUN apt-get update && apt-get install -y python3 python3-pip && pip3 ukufaka iflaski

Uma wonke amaphakheji akho efakiwe, yisikhathi sokukopisha kunoma iyiphi ikhodi yomthombo noma amafayela okumisa esitsheni. Lokhu kungenziwa kusetshenziswa umyalo othi COPY ulandelwe indlela yefayela elingumthombo nendlela okuyiwa kuyo ngaphakathi kwesiqukathi. Ngokwesibonelo:

KOPISHA ./app/app/

Ekugcineni, sekuyisikhathi sokucacisa ukuthi yimuphi umyalo okufanele wenziwe lapho kusetshenziswa lesi sitsha nge-docker run . Lokhu kwenziwa ngomyalo we-CMD olandelwa yinoma yimuphi umyalo okufanele wenziwe lapho kusetshenziswa lesi sitsha. Ngokwesibonelo:

CMD [“python3”, “/app/main.py”]

Okuthunyelwe okuhlobene:

Shiya amazwana