Docker: tohutohu kino

Docker: tohutohu kino

I a au e ako ana ki te taraiwa motoka, i te akoranga tuatahi ka peia e te kaiako ki te huarahi whakamuri, katahi ka kii kia kaua koe e mahi - kaua rawa. I mahara tonu ahau ki tenei ture me te toenga o toku oranga.

Ka panuihia e koe "Te Tohutohu Kino" na Grigory Oster ki nga tamariki, a ka kite koe i te ngawari me te maarama ki a raatau kia kaua e mahi i tenei.

He maha nga tuhinga kua tuhia mo te tuhi tika i te Dockerfile. Engari kaore au i kite i nga tohutohu mo te tuhi i nga Dockerfiles he. Kei te whakakiia e ahau tenei waahi. A pea i roto i nga kaupapa ka whiwhi tautoko ahau, ka iti ake nga konae dockerfile.

Ko nga ahuatanga katoa, nga ahuatanga me te Dockerfile he mea tito noa. Mena ka mohio koe ki a koe ano, pouri.

Te hanga i te Dockerfile, he kino, he whakamataku hoki

Pita (Senior java/rubby/php kaiwhakawhanake): E hoa mahi Vasily, kua tukuna kētia e koe he kōwae hou ki Docker?
Vasily (teina): Kaore, kaore au i whai taima, kaore au e mohio ki tenei Docker. He maha nga tuhinga kei runga, he pohehe.

Pita: He wa kati ta matou kotahi tau ki muri. Tukuna ahau ki te awhina i a koe, ka kitea e matou i roto i te tukanga. Korero mai ki ahau he aha te kore e pai ki a koe.

Vasily: Kaore e taea e au te whiriwhiri i tetahi ahua taketake kia iti rawa, engari kei a koe nga mea katoa e hiahia ana koe.
Pita: Tangohia te ahua ubuntu, kei a ia nga mea katoa e hiahia ana koe. A he aha te maha o nga mea e kore e tika ka tae mai i muri mai. A kaua e wareware ki te whakatakoto i te tohu hou kia noho hou ai te putanga.

Na ka puta te rarangi tuatahi ki te Dockerfile:

FROM ubuntu:latest

Pita: He aha te mea ka whai ake, he aha ta matou i whakamahi hei tuhi i ta matou waahanga?
Vasily: Na Ruby, he tūmau tukutuku me whakarewahia nga daemons e rua.
Pita: Ae, he aha ta tatou e hiahia: rupi, bundler, nodejs, imagemagick me te aha atu... A i te wa ano, me mahi he whakamohoatanga kia tino whiwhi kete hou.
Vasily: A kaore matou e hanga i tetahi kaiwhakamahi kia kore ai matou e noho ki raro i te pakiaka?
Pita: Fuck it, katahi koe ka pohehe tonu i nga tika.
Vasily: Kei te hiahia ahau ki te wa, tata ki te 15 meneti, ki te whakakotahi i te katoa ki te whakahau kotahi, ka panui ahau e...
(Ka haukotia e Pita te teina tino mohio me te tino mohio.)
Pita: Tuhia ki roto i nga whakahau motuhake, ka ngawari ake te panui.

Ka tipu te 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/*

Katahi a Igor Ivanovich, DevOps (engari he nui ake nga Ops i a Dev), ka pakaru ki roto i te tari ka karanga:

AI: Petya, i pakaru ano e to kaiwhakawhanake te putunga kai, ahea ka mutu tenei...

I muri i te riri iti, ka whakamatao a Igor Ivanovich ka timata ki te rapu he aha ana hoa mahi i konei.

AI: Kei te aha koe?
Vasily: Kei te awhina a Pita i ahau ki te hanga Dockerfile mo tetahi waahanga hou.
AI: Tukuna ahau ki te titiro ... He aha taau i tuhi i konei, ka horoi koe i te rehitatanga me te whakahau motuhake, he paparanga taapiri tenei ... Engari me pehea koe e whakauru ai i nga whakawhirinaki ki te kore koe e kape i te Gemfile! A, i te nuinga, kaore tenei i te pai.
Pita: Tena koa, haere ki to pakihi, ma matou e mohio.

Ka aue a Igor Ivanovich i te pouri, ka wehe atu ki te mohio ko wai i pakaru te putunga raraunga.

Pita: Ae, engari i tika tana korero mo te waehere, me pana ki te ahua. Na me whakauru tonu i te ssh me te kaitirotiro, ki te kore ka tiimata nga daemons.

Vasily: Na ka kape tuatahi ahau i te Gemfile me te Gemfile.lock, ka whakauruhia e ahau nga mea katoa, katahi ka kapehia e ahau te kaupapa katoa. Mena kaore te Gemfile e huri, ka tangohia te paparanga mai i te keteroki.
Pita: He aha koutou katoa ki enei paparanga, kape katoa i te wa kotahi. Tārua tonu. Ko te rarangi tuatahi.

He penei te ahua o te Dockerfile inaianei:

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

Pita: Na, ka pehea? He whirihora koe mo te kaitirotiro?
Vasily: Kaore, kaore. Engari ka tere taku mahi.
Pita: Ka mahia e koe. Me tuhi he tuhi init hei whakarewa i nga mea katoa. Kaati, ka timata koe i te ssh, me te nohup, kia hono atu tatou ki te ipu ka kite he aha te he. Na ka whakahaere i te kaitirotiro i te ara ano. Na, ka rere noa koe i te kaihihi.
P: Engari i panui ahau kia kotahi te mahi, kia mohio a Docker kua he tetahi mea ka taea te whakaara ano i te ipu.
P: Kaua e whakararuraru i to mahunga ki te kore korero. A i te nuinga, me pehea? Me pehea te whakahaere i enei mea katoa i roto i te tukanga kotahi? Kia whakaaro a Igor Ivanovich mo te pumau, ehara i te mea ka whiwhi ia i te utu. Ko ta matou mahi he tuhi waehere. A, i te nuinga o te waa, me mihi ki a koe na matou i tuhi te Dockefile mo ia.

10 meneti me nga ataata e rua mo nga ngeru i muri mai.

Q: Kua mahia e au nga mea katoa. I tapiritia e ahau etahi atu korero.
P: Whakaatu mai!

Putanga hou o 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: Nui, pai ki ahau. A ko nga korero kei te reo Ruhia, he waatea me te panui, ka mahi nga tangata katoa penei. I whakaako ahau ki a koe i nga mea katoa, ka taea e koe te mahi i te toenga. Kia haere tatou ki te inu kawhe...

Inaianei kei a matou he Dockerfile tino whakamataku, ko te kitenga ka hiahia a Igor Ivanovich ki te whakamutu ka mamae ona kanohi mo tetahi atu wiki. Ko te Dockerfile, ko te tikanga, he kino rawa atu, kaore he rohe ki te tino pai. Engari mo te timatanga, ka mahi tenei.

E hiahia ana ahau ki te whakamutu me tetahi korero mai i a Grigory Oster:

Mena kaore koe i te tino mohio
I whiriwhiria e matou te huarahi o te ao,
A kaore koe e mohio he aha
Tīmatahia to haerenga mahi,
Whatiia nga topuku rama i roto i nga huarahi -
Ka kii nga tangata "Mauruuru" ki a koe.
Ka awhina koe i te iwi
Whakaorangia te hiko.

Source: will.com

Tāpiri i te kōrero