Docker: droch-chomhairle

Docker: droch-chomhairle

Nuair a bhí mé ag foghlaim conas carr a thiomáint, ag an gcéad cheacht thiomáin an teagascóir isteach sa chrosbhealach droim ar ais, agus dúirt sé ansin nár cheart duit é sin a dhéanamh - riamh ar chor ar bith. Chuimhnigh mé ar an riail seo láithreach agus don chuid eile de mo shaol.

Léann tú “Drochchomhairle” le Grigory Oster do leanaí, agus feiceann tú cé chomh héasca agus chomh nádúrtha is atá sé dóibh nár cheart dóibh é seo a dhéanamh.

Scríobhadh go leor alt ar conas Dockerfile a scríobh i gceart. Ach níor tháinig mé trasna ar threoracha maidir le conas Dockerfiles mícheart a scríobh. Tá an bhearna seo á líonadh agam. Agus b'fhéidir go mbeidh níos lú comhaid docker den sórt sin sna tionscadail a bhfaighidh mé tacaíocht.

Tá gach carachtar, cás agus Dockerfile bréige. Má aithníonn tú tú féin, tá brón orainn.

Cruthú Dockerfile, ominous agus uafásach

Peter (Forbróir Sinsearach java/rubby/php): Comhghleacaí Vasily, an bhfuil modúl nua uaslódáilte agat chuig Docker cheana féin?
Vasily (sóisear): Ní raibh, ní raibh am agam, ní féidir liom é a dhéanamh amach leis an Docker seo. Tá an oiread sin altanna air, tá sé dochloíte.

Peadar: Bhí spriocdháta againn bliain ó shin. Lig dom cabhrú leat, déanfaimid é a dhéanamh amach sa phróiseas. Inis dom cad nach n-oibríonn duit.

Vasily: Ní féidir liom íomhá bhunúsach a roghnú ionas go mbeidh sé íosta, ach tá gach rud atá uait.
Peadar: Tóg an íomhá ubuntu, tá gach rud atá uait. Agus cad é a lán de na rudaí nach bhfuil gá a bheidh i handy níos déanaí. Agus ná déan dearmad an chlib is déanaí a chur ionas go mbeidh an leagan is déanaí i gcónaí.

Agus tá an chéad líne le feiceáil sa Dockerfile:

FROM ubuntu:latest

Peadar: Cad atá romhainn, cad a d’úsáideamar chun ár modúl a scríobh?
Vasily: Mar sin ruby, tá freastalaí gréasáin ann agus ba chóir cúpla deamhan seirbhíse a sheoladh.
Peadar: Sea, cad atá de dhíth orainn: ruby, bundler, nodejs, imagemagick agus cad eile ... Agus ag an am céanna, déan uasghrádú chun pacáistí nua a fháil go cinnte.
Vasily: Agus ní chruthóimid úsáideoir ionas nach mbeimid faoin bhfréamh?
Peadar: Maith é, ansin beidh orainn fós amadán a dhéanamh leis na cearta.
Vasily: Teastaíonn am uaim, thart ar 15 nóiméad, chun é go léir a chur le chéile in aon ordú amháin, léigh mé é sin ...
(Cuireann Peter isteach ar an sóisear meticulous agus an-chliste.)
Peadar: Scríobh in orduithe ar leith, beidh sé níos éasca é a léamh.

Fásann Dockerfile:

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

Ansin pléascann Igor Ivanovich, DevOps (ach níos mó OPs ná Dev), isteach san oifig ag béicíl:

AI: Bhris Petya, d’fhorbróirí an bunachar sonraí bia arís, cathain a chríochnóidh sé seo...

Tar éis skirmish beag, fuaraíonn Igor Ivanovich síos agus tosaíonn a fháil amach cad atá á dhéanamh ag a chomhghleacaithe anseo.

AI: Cad atá tú a dhéanamh?
Vasily: Tá Peter ag cabhrú liom Dockerfile a chruthú do mhodúl nua.
AI: Lig dom breathnú... Cad a scríobh tú anseo, glanann tú an stór le hordú ar leith, is ciseal breise é seo ... Ach conas a shuiteálann tú spleáchais mura bhfuil an Gemfile cóipeáilte agat! Agus go ginearálta, níl sé seo go maith.
Peadar: Téigh faoi do ghnó, le do thoil, déanfaimid amach é ar bhealach éigin.

Déanann Igor Ivanovich osna go brónach agus fágann sé le déanamh amach cé a bhris an bunachar sonraí.

Peadar: Sea, ach bhí an ceart aige faoin gcód, caithfimid é a bhrú isteach san íomhá. Agus déanaimis ssh agus maoirseoir a shuiteáil láithreach, nó cuirfimid tús leis na deamhan.

Vasily: Ansin déanfaidh mé an Gemfile agus Gemfile.lock a chóipeáil ar dtús, ansin déanfaidh mé gach rud a shuiteáil, agus ansin déanfaidh mé an tionscadal ar fad a chóipeáil. Mura n-athraíonn an Gemfile, tógfar an ciseal as an taisce.
Peadar: Cén fáth a bhfuil tú go léir leis na sraitheanna seo, cóipeáil gach rud láithreach. Cóipeáil láithreach. An chéad líne.

Breathnaíonn an Dockerfile mar seo anois:

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

Peadar: Mar sin, cad eile? An bhfuil cumraíochtaí agat don mhaoirseoir?
Vasily: Níl, níl. Ach déanfaidh mé go tapa é.
Peadar: Ansin déanfaidh tú é. Déanaimis sceitse amach anois script init a sheolfaidh gach rud. Ceart go leor, mar sin tosaíonn tú ssh, le nohup, ionas gur féidir linn ceangal leis an gcoimeádán agus féachaint cad a chuaigh mícheart. Ansin reáchtáil maoirseoir ar an mbealach céanna. Bhuel, ansin ritheann tú díreach paisinéirí.
C: Ach léigh mé gur chóir go mbeadh próiseas amháin ann, mar sin beidh a fhios ag Docker go ndeachaigh rud éigin mícheart agus is féidir leis an gcoimeádán a atosú.
P: Ná bac le do cheann gan chiall. Agus go ginearálta, conas? Conas a ritheann tú seo go léir in aon phróiseas amháin? Lig Igor Ivanovich smaoineamh ar chobhsaíocht, ní ar rud ar bith a fhaigheann sé tuarastal. Is é an post atá againn cód a scríobh. Agus go ginearálta, lig dó buíochas a ghabháil leat gur scríobhamar an Dockfile dó.

10 nóiméad agus dhá fhíseán faoi chait níos déanaí.

C: Tá gach rud déanta agam. Chuir mé tuilleadh tuairimí leis.
P: Taispeáin dom!

An leagan is déanaí de 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: Go hiontach, is maith liom é. Agus tá na tuairimí i Rúisis, áisiúil agus inléite, bheadh ​​​​gach duine ag obair mar sin. Mhúin mé gach rud duit, is féidir leat an chuid eile a dhéanamh leat féin. Gabhaimid roinnt caife...

Bhuel, anois tá Dockerfile iontach uafásach againn, rud a fhágann go mbeidh Igor Ivanovich ag iarraidh éirí as agus gortóidh a shúile ar feadh seachtaine eile. D'fhéadfadh an Dockerfile, ar ndóigh, a bheith níos measa fós, níl aon teorainn le foirfeacht. Ach mar thús, déanfaidh sé seo.

Ba mhaith liom deireadh a chur le sliocht ó Grigory Oster:

Mura bhfuil tú cinnte fós
Roghnaigh muid an cosán sa saol,
Agus níl a fhios agat cén fáth
Tosaigh do thuras saothair,
Bris na bolgáin solais sna hallaí -
Déarfaidh daoine “Go raibh maith agat” leat.
Cabhróidh tú leis na daoine
Sábháil leictreachas.

Foinse: will.com

Add a comment