Docker: malangizo oyipa

Docker: malangizo oyipa

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

Kuwonjezera ndemanga