Docker: fautuaga leaga

Docker: fautuaga leaga

A o ou aʻoaʻo e ave se taʻavale, i le lesona muamua lava na alu ai le faiaoga i le fetaulaiga i tua, ona fai mai lea e le tatau ona e faia lena mea - e leai lava. Sa vave ona ou manatua lenei tulafono ma mo lo'u olaga atoa.

E te faitau i tamaiti le "Fautuaga Leaga" na saunia e Grigory Oster, ma e te vaʻai i le faigofie ma le masani ona latou iloa e le tatau ona latou faia lenei mea.

Ole tele o tala na tusia ile auala e tusi saʻo ai se Dockerfile. Ae ou te leʻi mauaina ni faʻatonuga ile auala e tusi ai Dockerfiles sese. Ou te faatumuina lenei avanoa. Ma atonu i totonu o galuega faatino ou te mauaina le lagolago, o le a itiiti lava faila faila faapena.

O mataitusi uma, tulaga ma Dockerfile e fatu. Afai e te iloa oe lava, fa'anoanoa.

Fausia se Dockerfile, faʻafefe ma mataʻutia

Peter (Senior java/rubby/php developer): Colleague Vasily, ua uma ona e lafoina se module fou i Docker?
Vasily (tamaitiiti): Leai, e leʻi maua soʻu taimi, e le mafai ona ou iloa i lenei Docker. E tele naua tala i ai, e niniva.

Peter: Sa iai le taimi e gata ai i le tausaga talu ai. Se'i ou fesoasoani atu ia te oe, o le a tatou iloiloina i le faagasologa. Ta'u mai mea e le aoga mo oe.

Vasily: E le mafai ona ou filifilia se ata faavae ina ia laʻititi, ae maua mea uma e te manaʻomia.
Peter: Ave le ata ubuntu, o loʻo i ai mea uma e te manaʻomia. Ma o le a le tele o mea e le manaʻomia o le a faʻaaogaina mulimuli ane. Ma 'aua ne'i galo e tu'u le fa'ailoga fou ina ia fa'afou pea le fa'asologa.

Ma o le laina muamua e aliali mai i le Dockerfile:

FROM ubuntu:latest

Peteru: O le ā le isi mea, o le ā na tatou faaaogāina e tusi ai la tatou module?
Vasily: O lea la ruby, o loʻo i ai se 'upega tafaʻilagi ma se lua o tautua daemons e tatau ona faʻalauiloa.
Peter: Ioe, o le a le mea tatou te manaʻomia: ruby, bundler, nodejs, imagemagick ma isi mea ... Ma i le taimi lava e tasi, fai se faʻaleleia e mautinoa ai le mauaina o afifi fou.
Vasily: Ma o le a tatou le fatuina se tagata faʻaoga ina ia tatou le aʻa?
Petelo: Fua, e tatau lava ona e faavalea i aiā tatau.
Vasily: Ou te manaʻomia se taimi, e tusa ma le 15 minute, e tuʻu faʻatasi uma i se poloaiga e tasi, na ou faitau ai ...
(Ua faasalavei ma le le mafaufau e Peteru le tama maʻoti ma le atamai tele.)
Peteru: Tusi i ni poloaiga eseese, o le a faigofie ai ona faitau.

Dockerfile tuputupu ae:

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

Ona oso atu lea o Igor Ivanovich, DevOps (ae sili atu Ops nai lo Dev), i totonu o le ofisa ma alalaga:

AI: Petya, ua toe talepeina e au atinaʻe le faʻamaumauga o meaʻai, o afea e muta ai ...

Ina ua maeʻa se faʻalavelave laʻititi, o Igor Ivanovich e malulu ma amata ona iloa mea o loʻo faia e ana uo iinei.

AI: O le a lau mea o fai?
Vasily: O loʻo fesoasoani Peteru ia te aʻu e fatuina se Dockerfile mo se module fou.
AI: Sei ou tilotilo ... O le a le mea na e tusia iinei, e te faʻamama le fale teu oloa ma se faʻatonuga ese, o se faʻaopoopoga faʻaopoopo ... Ae faʻafefea ona e faʻapipiʻi faʻalagolago pe afai e te leʻi kopiina le Gemfile! Ma i se tulaga lautele, e le lelei lenei mea.
Petelo: Fa'amolemole alu i lau pisinisi, o le a matou iloa i se auala.

Ua mapuea ma le faanoanoa Igor Ivanovich ma alu ese e saili po o ai na talepeina le database.

Peteru: Ioe, ae na saʻo o ia i le code, e tatau ona tatou tuleia i totonu o le ata. Ma ia vave faʻapipiʻi le ssh ma le supavaisa, a leai o le a tatou amataina le daemons.

Vasily: Ona ou kopi muamua lea o le Gemfile ma Gemfile.lock, ona ou faʻapipiʻiina lea o mea uma, ona ou kopiina lea o le galuega atoa. Afai e le suia le Gemfile, o le a ave'esea le laulau mai le cache.
Peter: Aisea ua outou i ai uma i nei laulau, kopi mea uma i le taimi e tasi. Kopi vave. Le laina muamua lava.

O le Dockerfile ua foliga nei:

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

Peteru: O le ā la le isi? E iai sau fa'atonuga mo le supavaisa?
Vasily: Leai, leai. Ae o le a ou faia vave.
Peteru: Ona e faia lea. Se'i o tatou tusi ata se init script e fa'alauiloa ai mea uma. Lelei, o lea e te amata ssh, ma le nohup, ina ia mafai ona matou faʻafesoʻotaʻi i le koneteina ma vaʻai poʻo le a le mea na tupu. Ona fai lea o le supavaisa i le auala lava e tasi. Ia, na'o lou ta'avale pasese.
Q: Ae na ou faitau e tatau ona tasi le faagasologa, o lea o le a iloa ai e Docker o loʻo i ai se mea na tupu ma e mafai ona toe amata le koneteina.
P: Aua le fa'alavelave lou ulu i mea fa'avalevalea. Ma i se tulaga lautele, e faapefea? E fa'afefea ona e fa'agasolo uma nei mea ile fa'agasologa e tasi? Tuu atu ia Igor Ivanovich e mafaufau e uiga i le mautu, e le o se mea e maua ai se totogi. O la matou galuega o le tusia lea o code. Ma i se tulaga lautele, tuu atu ia te ia e fai mai faafetai na matou tusia le Dockefile mo ia.

10 minute ma lua vitio e uiga i pusi mulimuli ane.

F: Ua ou faia mea uma. Sa ou faaopoopo nisi faamatalaga.
P: Faaali mai!

Faiga fou 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: Lelei, ou te fiafia i ai. Ma o faʻamatalaga o loʻo i Rusia, faigofie ma mafai ona faitau, o le a galulue tagata uma faapena. Na ou aʻoaʻoina oe i mea uma, e mafai ona e faia isi mea e oe lava. Ta o e inu kofe...

Ia, o lea ua tatou maua se Dockerfile sili ona mataʻutia, o le vaaiga o le a manaʻo ai Igor Ivanovich e faʻamavae ma o le a tiga ona mata mo se isi vaiaso. O le Dockerfile, ioe, e mafai ona sili atu ona leaga, e leai se tapulaa i le atoatoa. Ae mo se amataga, o le a faia lenei mea.

Ou te fia faaiu i se upusii mai ia Grigory Oster:

Afai e te le o mautinoa
Na matou filifilia le ala i le olaga,
Ma e te le iloa pe aisea
Amata lau malaga faigaluega,
Ta'e matauila i totonu o alatele -
O le a fai atu tagata "Faafetai" ia te oe.
O le ae fesoasoani i tagata
Faasaoina le eletise.

puna: www.habr.com

Faaopoopo i ai se faamatalaga