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