
Markii aan baranayay darawalnimada, casharkaygii ugu horreeyay, macalinku wuxuu u rogay isgoys ka dibna wuxuu ii sheegay inaadan taas sameyn karin-waligaa. Waxaan xasuustay xukunkaas isla markiiba iyo weligeedba.
Waxaad akhriday Grigory Oster's "Talada waxyeelada leh" ee carruurta oo arag sida ugu fudud iyo si dabiici ah ay u fahmaan in tani aysan sax ahayn.
Waxaa jira maqaallo badan oo laga qoray sida saxda ah ee loo qoro Dockerfiles. Laakin maan la kulmin tilmaamo ku saabsan sida loo qoro Dockerfiles xun. Waxaan buuxinayaa farqiga. Waxaana laga yaabaa in mashaariicda aan taageerayo ay yaraan doonaan Dockerfiles.
Dhammaan jilayaasha, xaaladaha, iyo Dockerfiles waa khiyaali. Waan ka xunahay haddii aad isku garto arrintan.
Abuuritaanka Dockerfile, wax xun oo laga naxo
Petr (Sare java/rubby/php horumariye): Saaxiibkii Vasily, horay ma u soo gelisay moduleka cusub Docker?
Vasily (yar): Maya, ma haysan waqti. Ma garan karo arrintan Docker. Waxaa jira maqaallo badan oo ku saabsan, waa mid xad dhaaf ah.
Petr: Xilliga kama dambaysta ahi wuxuu ahaa sannad ka hor. Aan ku caawiyo, waan ogaan doonaa inta aan socono. Ii sheeg waxa aan kuu shaqaynayn.
Vasily: Ma dooran karo muuqaal aasaasi ah, markaa waa mid aad u yar, laakiin wuxuu leeyahay wax kasta oo aan u baahanahay.
Petr: Hel sawirka Ubuntu; waxay leedahay wax kasta oo aad u baahan tahay. Wax kasta oo dheeraad ah ayaa ku iman doona anfaca hadhow. Ha iloobin inaad ku dhejiso "ugu dambeysay" si ay had iyo jeer u noqoto nuqulkii ugu dambeeyay.
Oo laynka kowaad wuxuu ka muuqdaa Dockerfile:
FROM ubuntu:latestButros: Maxaa xiga, maxaan ku qornay cutubkayaga?
Vasily: Waa hagaag, waa Ruby, waxaa jira server-ka shabakadda iyo dhowr daemons adeeg ah oo u baahan inay shaqeeyaan.
Peter: Haa, waxa aan u baahanahay: ruby, bundler, nodejs, imagemagick, iyo wax kasta oo kale... Oo intaad ku jirto, cusboonaysii si aad u hubiso inaad hesho baakadaha cusub.
Vasily: Oo ma abuuri doono isticmaale, si aanu ugu socon xididka?
Butros: Oh, iska illow, markaas waa inaan ku dhibtooneynaa 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-ku 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/*Dabadeed Igor Ivanovich, DevOps (laakin Ops ka badan Dev), ayaa ku soo booday xafiiska isagoo ku qaylinaya:
AI: Petya, horumariyeyaashaadu waxay jebiyeen xogta wax soo saarka mar kale, goorma ayaa tani dhammaan doontaa...
Ka dib rabshad gaaban, Igor Ivanovich wuu qaboojiyey oo bilaabay inuu ogaado waxa ay asxaabtiisu halkan ku sameynayaan.
AI: maxaad wadaa?
Vasily: Petr waxa uu iga caawinayaa in aan isu keeno Dockerfile-ka nooc cusub.
AI: Aan arko...Maxaad halkan ku qortay? Waxaad ku nadiifinaysaa kaydka amar gooni ah, taasi waa lakab dheeraad ah... Sidee baad u rakibaysaa ku-tiirsanaanta haddii aadan nuqul ka samayn Gemfile! Si kastaba ha ahaatee, tani gabi ahaanba waa wax aan faa'iido lahayn.
Peter: Fadlan u gudub ganacsigaaga, si uun baannu u ogaan doonnaa tan.
Igor Ivanovich si murugo leh ayuu u taahaa oo u baxaa si uu u ogaado cidda jabisay xogta.
Petr: Haa, laakiin wuu ku saxsanaa xeerka; waxaan u baahanahay inaan ku tuurno sawirka. Oo aynu isla markiiba rakibno ssh iyo kormeeraha, haddii kale sidee ayaan u socodsiin karnaa daemons-ka?
Vasily: Ka dib waxaan marka hore koobi doonaa Gemfile iyo Gemfile.lock, ka dibna wax walba rakibi, ka dibna koobi doonaa dhammaan mashruuca. Haddii Gemfile uusan isbeddelin, lakabka ayaa laga qaadi doonaa kaydka.
Butros: Maxaad ku samaynaysaa dhammaan lakabyadan? Wax walba hal mar koobiyi. Mar qura koobiy. 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/* Peter: Haddaba, maxaa xiga? Ma haysaa habaynta kormeeraha?
Vasily: Maya, ma haysto. Laakiin si degdeg ah ayaan qaar u samayn doonaa.
Petr: Waad sameyn doontaa mar dambe. Aynu wada tuurno farta init hadda oo wax walba bilaabi doonta. Hagaag, markaa waxaad ku bilawday ssh nohup si aan ugu xidhno weelka oo aan u aragno waxa khaldamay. Kadibna si la mid ah u bilow kormeeraha. Ka dibna kaliya soo saar rakaabka.
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 hadal aan macno lahayn. Si kastaba ha ahaatee, sidee? Sidee ayaad waxan oo dhan ugu socodsiinaysaa hal hab? Igor Ivanovich ha ka welwelo xasilloonida; wax lacag ah kuma helayo. Shaqadayadu waa inaan qorno koodka. Si kastaba ha ahaatee, ha nooga mahadceliyo qorista Dockfile-ka isaga.
10 daqiiqo iyo laba fiidiyow oo ku saabsan bisadaha ka dib.
S: Wax walba waan sameeyay. Waxaan ku daray faallooyin kale.
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, waa ku habboon tahay oo la akhriyi karo; qof walba waa inuu sidan u shaqeeyaa. Wax walba waan ku baray, hadda adaa adigu samayn kartaa. Aan tagno xoogaa qaxwo ah...
Sidaa darteed, halkan waxaan ku haynaa Dockerfile aad u xun, aragtida taas oo ka dhigi doonta Igor Ivanovich inuu rabo inuu joojiyo oo uu ka tago indhihiisa oo xanuunaya usbuuc. Dockerfile, dabcan, wuu ka sii xumaan karaa; had iyo jeer waxaa jira boos horumar ah. Laakiin hadda, tani way sameyn doontaa.
Waxaan jeclaan lahaa in aan ku soo afjaro oraah ka timid Grigory Oster:
Haddaadan weli hubin
Nolosha waxaan dooranay waddo,
Oo ma garanaysid sababta
Si aan u bilaabo safarkayga shaqo,
Jebi nalalka iftiinka ee albaabbada -
Dadku waxay odhan doonaan "Mahadsanid".
Waxaad caawin doontaa dadka
Korontada badbaadi
Source: www.habr.com
