Pamene ndinali kuphunzira kuyendetsa galimoto, pa phunziro loyamba mlangizi anayendetsa mu mphambano chammbuyo, ndiyeno ananena kuti musamachite zimenezo - konse. Ndinakumbukira lamuloli nthawi yomweyo komanso kwa moyo wanga wonse.
Mumawerenga "Malangizo Oipa" a Grigory Oster kwa ana, ndipo mukuwona momwe zimakhalira mosavuta komanso mwachibadwa kuti sayenera kuchita izi.
Zolemba zambiri zalembedwa zamomwe mungalembe Dockerfile molondola. Koma sindinapeze malangizo amomwe ndingalembe ma Dockerfiles olakwika. Ndikudzaza kusiyana uku. Ndipo mwina mumapulojekiti omwe ndimalandira chithandizo, padzakhala ma dockerfiles ochepa.
Onse otchulidwa, zochitika ndi Dockerfile ndizopeka. Ngati mukudzizindikira nokha, pepani.
Kupanga Dockerfile, yowopsa komanso yowopsa
Peter (Wopanga Java / rubby/php): Mnzake Vasily, kodi mwakweza kale gawo latsopano ku Docker?
Vasily (junior): Ayi, ndinalibe nthawi, sindingathe kudziwa ndi Docker uyu. Pali zolemba zambiri pa izo, ndi zododometsa.
Peter: Tinali ndi nthawi yomaliza chaka chapitacho. Ndiroleni ndikuthandizeni, tiwona momwe zilili. Ndiuzeni zomwe sizikugwira ntchito kwa inu.
Vasily: Sindingathe kusankha chithunzi choyambirira kuti chikhale chochepa, koma chili ndi zonse zomwe mukufunikira.
Peter: Tengani chithunzi cha ubuntu, chili ndi zonse zomwe mungafune. Ndipo zinthu zambiri zosafunikira zidzathandiza pambuyo pake. Ndipo musaiwale kuyika chizindikiro chatsopano kuti mtunduwo ukhale waposachedwa kwambiri.
Ndipo mzere woyamba ukuwoneka mu Dockerfile:
FROM ubuntu:latest
Peter: Chotsatira ndi chiyani, tidagwiritsa ntchito chiyani polemba gawo lathu?
Vasily: Ndiye ruby, pali seva yapaintaneti ndipo ma daemoni angapo akuyenera kukhazikitsidwa.
Peter: Eya, timafunikira chiyani: ruby, bundler, nodejs, imagemagick ndi zina ...
Vasily: Ndipo sitipanga wogwiritsa ntchito kuti tisakhale pansi?
Peter: Fuck, ndiye uyenerabe kupusitsa ndi ufulu.
Vasily: Ndikufuna nthawi, pafupifupi mphindi 15, kuti ndiziyika zonse pamodzi kukhala lamulo limodzi, ndinawerenga kuti ...
(Peter mwamwano amamusokoneza wachinyamata wosamala komanso wanzeru kwambiri.)
Peter: Lembani malamulo osiyana, zidzakhala zosavuta kuwerenga.
Dockerfile amakula:
FROM ubuntu:latest
RUN apt-get update
RUN apt-get upgrade
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full
RUN gem install bundler
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash -
RUN apt-get install -y nodejs
RUN bundle install --without development test --path vendor/bundle
RUN rm -rf /usr/local/bundle/cache/*.gem
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Kenako Igor Ivanovich, DevOps (koma Ops ambiri kuposa Dev), adalowa muofesi akufuula kuti:
AI: Petya, omanga anu adaphwanyanso nkhokwe yazakudya, izi zitha liti ...
Pambuyo kumenyana pang'ono, Igor Ivanovich kuziziritsa ndi kuyamba kudziwa zimene anzake akuchita pano.
AI: Mukuchita chiyani?
Vasily: Peter akundithandiza kupanga Dockerfile ya gawo latsopano.
AI: Ndiloleni ndiyang'ane ... Munalemba chiyani apa, mumatsuka chosungiramo ndi lamulo losiyana, ichi ndi chowonjezera chowonjezera ... Koma mumayika bwanji zodalira ngati simunakopere Gemfile! Ndipo zambiri, izi sizabwino.
Peter: Chonde pitilizani bizinesi yanu, tidzayipeza mwanjira ina.
Igor Ivanovich akuusa mwachisoni ndikusiya kuti adziwe yemwe anaphwanya nkhokwe.
Peter: Inde, koma anali wolondola ponena za code, tiyenera kukankhira mu fano. Ndipo tiyeni tiyike nthawi yomweyo ssh ndi woyang'anira, apo ayi tiyambitsa ma daemoni.
Vasily: Kenako ndiyamba kukopera Gemfile ndi Gemfile.lock, kenako ndikuyika zonse, kenako ndikutengera ntchito yonseyo. Ngati Gemfile sikusintha, wosanjikiza adzachotsedwa posungira.
Peter: Chifukwa chiyani nonse muli ndi zigawo izi, tengerani zonse nthawi imodzi. Koperani nthawi yomweyo. Mzere woyamba kwambiri.
Dockerfile tsopano ikuwoneka motere:
FROM ubuntu:latest
COPY ./ /app
WORKDIR /app
RUN apt-get update
RUN apt-get upgrade
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor
RUN gem install bundler
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash -
RUN apt-get install -y nodejs
RUN bundle install --without development test --path vendor/bundle
RUN rm -rf /usr/local/bundle/cache/*.gem
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
Peter: Ndiye, chitani chotsatira? Kodi muli ndi ma configs a supervisor?
Vasily: Ayi, ayi. Koma ndichita mofulumira.
Peter: Ndiye mudzachita. Tiyeni tsopano tijambule init script yomwe idzayambitse chilichonse. Chabwino, ndiye kuti muyambe ssh, ndi nohup, kuti tigwirizane ndi chidebecho ndikuwona zomwe zalakwika. Kenako yendetsani woyang'anira momwemo. Chabwino, ndiye mumangothamangira okwera.
Q: Koma ndidawerenga kuti payenera kukhala njira imodzi, kuti Docker adziwe kuti china chake chalakwika ndikuyambitsanso chidebecho.
P: Osavutitsa mutu wanu ndi zamkhutu. Ndipo mochuluka bwanji? Kodi mumayendetsa bwanji zonsezi munjira imodzi? Lolani Igor Ivanovich aganizire za bata, sikuli kanthu kuti amalandira malipiro. Ntchito yathu ndikulemba ma code. Ndipo zambiri, anene zikomo kuti tinamulembera Dockefile.
Mphindi 10 ndi makanema awiri okhudza amphaka pambuyo pake.
Q: Ndachita zonse. Ndinawonjezera ndemanga.
P: Ndiwonetseni!
Mtundu waposachedwa wa Dockerfile:
FROM ubuntu:latest
# ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄
COPY ./ /app
WORKDIR /app
# ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
RUN apt-get update
# ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ
RUN apt-get upgrade
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ bundler
RUN gem install bundler
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ nodejs ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠΈ
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash -
RUN apt-get install -y nodejs
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
RUN bundle install --without development test --path vendor/bundle
# Π§ΠΈΡΡΠΈΠΌ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΊΡΡΠΈ
RUN rm -rf /usr/local/bundle/cache/*.gem
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΡΠΈΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅.
CMD [β/app/init.shβ]
P: Chabwino, ndimakonda. Ndipo ndemanga zili mu Chirasha, zosavuta komanso zowerengeka, aliyense angagwire ntchito motero. Ndinakuphunzitsani chirichonse, inu mukhoza kuchita zina nokha. Tiye tikamwe khofi...
Chabwino, tsopano tili ndi Dockerfile woopsa kwambiri, zomwe zidzapangitse Igor Ivanovich kufuna kusiya ndipo maso ake adzapweteka kwa sabata lina. Dockerfile, inde, ikhoza kukhala yoyipa kwambiri, palibe malire ku ungwiro. Koma poyambira, izi zitha.
Ndikufuna kutsiriza ndi mawu ochokera kwa Grigory Oster:
Ngati simuli otsimikiza panobe
Tinasankha njira ya moyo,
Ndipo simukudziwa chifukwa chake
Yambani ulendo wanu wantchito,
Dulani mababu amagetsi m'mabwalo -
Anthu adzanena kuti βZikomoβ kwa inu.
Mudzathandiza anthu
Sungani magetsi.
Source: www.habr.com