Docker: talo xumo

Docker: talo xumo

Markii aan baranayay sida loo kaxeeyo baabuur, casharkii ugu horreeyay ayuu macalinku u kaxeeyay isgoyska si cagsi ah, ka dibna wuxuu yiri waa inaadan sidaas samayn - waligaa haba yaraatee. Waxaan soo xusuustay xeerkan isla markiiba iyo inta noloshayda ka hadhay.

Waxaad u akhriday "Talo-xumo" by Grigory Oster carruurta, waxaadna arkaysaa sida ugu fudud oo dabiiciga ah ee ay ugu soo baxayso iyaga oo ah inayan tan samayn.

Maqaalo badan ayaa laga qoray sida saxda ah ee loo qoro Dockerfile. Laakiin ma aanan la kulmin tilmaamo ku saabsan sida loo qoro Dockerfiles khaldan. Waxaan buuxinayaa farqiga. Waxaana laga yaabaa in mashaariicda aan taageero ka helo, ay yaraan doonaan dockerfiles-ka noocaas ah.

Dhammaan jilayaasha, xaaladaha iyo Dockerfile waa khiyaali. Haddi aad isku garato, raali noqo.

Abuuritaanka Dockerfile, wax laga xumaado oo laga cabsado

Peter (Sare java/rubby/php horumariye): Saaxiibkii Vasily, horay ma u soo galisay cutub cusub Docker?
Vasily (yar): Maya, ma haysan waqti, kuma garan karo Docker kan. Waxaa ku jira maqaallo badan, waa dawakhaad.

Peter: Waxaan haysanay waqti kama dambays ah sanad ka hor. Aan ku caawiyo, waxaan ku ogaan doonaa habka. Ii sheeg waxa aan kuu shaqaynayn.

Vasily: Ma dooran karo sawirka aasaasiga ah si uu u yaraado, laakiin wuxuu leeyahay wax kasta oo aad u baahan tahay.
Peter: Qaado sawirka ubuntu, waxay leedahay wax kasta oo aad u baahan tahay. Iyo waxa badan oo aan loo baahnayn ayaa ku iman doona anfaca dambe. Ha ilaawin inaad dhejiso summada ugu dambeysa si nuqulku had iyo jeer u noqdo kii ugu dambeeyay.

Oo laynka kowaad wuxuu ka muuqdaa Dockerfile:

FROM ubuntu:latest

Butros: Maxaa xigay, maxaan u isticmaalnay inaan ku qorno cutubkayaga?
Vasily: Markaa ruby, waxaa jira server-ka shabakadda, waana in la bilaabo dhowr daemons adeeg ah.
Peter: Haa, maxaan u baahanahay: ruby, bundler, nodejs, imagemagick iyo waxa kale ...
Vasily: Oo ma abuuri doono isticmaale si aanaan xididka u hoos iman?
Butros: Fuck, markaa wali waa inaad ku khiyaanaysaa xuquuqda.
Vasily: Waxaan u baahanahay wakhti, qiyaastii 15 daqiiqo, si aan isugu geeyo hal amar, waan akhriyay taas...
(Peter si xun ayuu u kala gooyay da'yarta aadka u caqli badan.)
Butros: Ku qor amarro kala duwan, way sahlanaan doontaa in la akhriyo.

Dockerfile wuu koraa:

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/*

Kadib Igor Ivanovich, DevOps (laakiin ka badan Ops marka loo eego Dev), ayaa ku dhex qarxay xafiiska isagoo ku qaylinaya:

AI: Petya, horumariyayaashaadu waxay jebiyeen xogta cuntada mar labaad, goorma ayay tani dhamaanaysaa...

Ka dib dagaal yar, Igor Ivanovich wuu qaboojiyey oo bilaabay inuu ogaado waxa ay asxaabtiisu halkan ku sameynayaan.

AI: maxaad qabanaysaa?
Vasily: Peter wuxuu iga caawinayaa inaan abuuro Dockerfile module cusub.
AI: Aan eegno ... Maxaad halkan ku qortay, waxaad ku nadiifinaysaa kaydka amar gooni ah, tani waa lakab dheeraad ah ... Laakiin sidee ayaad u rakibtaa ku-tiirsanaanta haddii aadan nuqul ka helin Gemfile! Iyo guud ahaan, tani ma fiicna.
Peter: Fadlan u gudub ganacsigaaga, si uun baannu u ogaan doonnaa.

Igor Ivanovich si murugo leh ayuu u taahaa oo ka baxaa si uu u ogaado cidda jabisay xogta.

Butros: Haa, laakiin wuxuu ku saxsanaa koodhka, waxaan u baahanahay inaan ku riixno sawirka. Oo aynu isla markiiba ku rakibno ssh iyo kormeeraha, haddii kale waxaan bilaabi doonaa daemons.

Vasily: Markaa marka hore waxaan koobi doonaa Gemfile iyo Gemfile.lock, ka dib waxaan rakibi doonaa wax kasta, ka dibna waxaan koobi doonaa mashruuca oo dhan. Haddii Gemfile uusan isbeddelin, lakabka ayaa laga qaadi doonaa kaydka.
Butros: Maxaad dhammaantiin lakabyadan ula haysaan, wax walba hal mar koobiyi. Isla markiiba nuqul ka samee Safka ugu horreeya.

Dockerfile hadda waa sidan:

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/* 

Butros: Haddaba, maxaa xiga? Ma haysaa habab loogu talagalay kormeeraha?
Vasily: Maya, maya. Laakiin si degdeg ah ayaan u samayn doonaa.
Butros: Markaa waad samayn doontaa. Aynu hadda sawirno farta init oo bilaabi doonta wax walba. Hagaag, markaa waxaad ku bilowdaa ssh, adoo wata nohup, si aan ugu xidhno weelka oo aan u aragno waxa khaldamay. Kadibna si la mid ah u maamul kormeeraha. Hagaag, markaas waxaad kaliya orday rakaab.
S: Laakiin waxaan akhriyay in hal nidaam la sameeyo, markaa Docker wuxuu ogaan doonaa in ay wax khaldameen oo uu dib u bilaabi karo weelka.
P: Madaxaaga ha ku dhibin wax aan macno lahayn. Iyo guud ahaan, sidee? Sidee ayaad waxaas oo dhan ugu socodsiinaysaa hal hab? U ogolow Igor Ivanovich inuu ka fekero xasilloonida, maahan wax aan waxba ahayn in uu helo mushahar. Shaqadayadu waa inaan qorno koodka. Iyo guud ahaan, ha yidhaahdo waad ku mahadsan tahay in aanu u qornay Dockfile-ka isaga.

10 daqiiqo iyo laba fiidiyow oo ku saabsan bisadaha ka dib.

S: Wax walba waan sameeyay. Faallo badan ayaan ku daray.
P: i tus!

Nooca ugu dambeeyay ee 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: Wayn, waan jeclahay. Faallooyinkuna waa Ruush, ku habboon oo la akhriyi karo, qof kastaa sidaas oo kale ayuu u shaqayn lahaa. Wax walba waan ku baray, inta soo hartayna adigu waad samayn kartaa. Aan tagno qaxwo cab...

Hagaag, hadda waxaan haysanaa Dockerfile aad u xun, aragtida taas oo ka dhigi doonta Igor Ivanovich inuu rabo inuu joojiyo oo indhihiisu ay dhaawacaan usbuuc kale. Dockerfile, dabcan, way ka sii xumaan kartaa, ma jirto wax xaddidan oo kaamil ah. Laakiin bilawga, tani way sameyn doontaa.

Waxaan jeclaan lahaa in aan ku soo afjaro oraah ka timid Grigory Oster:

Haddaadan weli hubin
Waxaan doorannay waddada nolosha,
Oo ma garanaysid sababta
Bilow safarkaaga shaqo,
Jebi nalalka iftiinka ee dariiqyada -
Dadku waxay ku odhan doonaan "Mahadsanid".
Waxaad caawin doontaa dadka
Korontada badbaadi

Source: www.habr.com

Add a comment