Mgbe m na-amụta ịnya ụgbọ ala, na nnọọ mbụ nkuzi onye nkụzi ụgbọala n'ime intersection na azụ, na mgbe ahụ kwuru na ị na-ekwesịghị ime na-mgbe ọlị. Echetara m iwu a ozugbo na oge ndụ m niile.
Ị na-agụ "Ndụmọdụ ọjọọ" nke Grigory Oster nyere ụmụaka, ị na-ahụkwa ka ọ dị mfe na n'ụzọ nkịtị ọ na-apụta na ha na ha ekwesịghị ime nke a.
Edela ọtụtụ akụkọ maka otu esi ede Dockerfile nke ọma. Mana ahụghị m ntuziaka maka otu esi ede Dockerfiles na-ezighi ezi. Ana m ejuputa oghere a. Ma eleghị anya na ọrụ m na-enweta nkwado, a ga-enwe obere dockerfiles dị otú ahụ.
Ederede niile, ọnọdụ na Dockerfile bụ akụkọ ifo. Ọ bụrụ na ị mata onwe gị, ndo.
Ịmepụta Dockerfile, jọgburu onwe ya na egwu
Peter (Onye nrụpụta java/rubby/php): Onye ọrụ ibe Vasily, ị bugorola modul ọhụrụ na Docker?
Vasily (obere): Mba, enweghị m oge, enweghị m ike ịchọpụta ya na Docker a. Enwere ọtụtụ akụkọ na ya, ọ na-agbaji.
Peter: Anyị nwere oge imecha otu afọ gara aga. Ka m nyere gị aka, anyị ga-achọpụta ya na usoro a. Gwa m ihe na-adịghị arụ ọrụ maka gị.
Vasily: Enweghị m ike ịhọrọ isi ihe oyiyi ka ọ dị ntakịrị, mana enwere m ihe niile ị chọrọ.
Peter: Were ihe oyiyi ubuntu, o nwere ihe niile ị chọrọ. Na ihe bụ ọtụtụ ihe na-adịghị mkpa ga-aba uru ma emechaa. Echefukwala itinye mkpado kachasị ọhụrụ ka ụdị ahụ bụrụ nke kachasị ọhụrụ mgbe niile.
Na ahịrị nke mbụ pụtara na Dockerfile:
FROM ubuntu:latest
Peter: Kedu ihe ọzọ, gịnị ka anyị ji dee modul anyị?
Vasily: Ya mere ruby, enwere sava webụ na ekwesịrị ịmalite ọrụ daemons ole na ole.
Peter: Ee, gịnị ka anyị chọrọ: ruby, bundler, nodejs, imagemagick na ihe ọzọ ... Ma n'otu oge ahụ, mee nkwalite iji nweta ngwugwu ọhụrụ.
Vasily: Ma anyị agaghị emepụta onye ọrụ ka anyị ghara ịnọ n'okpuru mgbọrọgwụ?
Peter: Chee ya, yabụ ị ka ga-eji ikike ghọgbuo gị.
Vasily: Achọrọ m oge, ihe dị ka nkeji iri na ise, iji tinye ya niile n'otu iwu, agụọ m na ...
(Pita ji obi ọjọọ kwụsị onye na-eto eto nwere ọgụgụ isi na nke nwere ọgụgụ isi.)
Peter: Dee iwu dị iche iche, ọ ga-adị mfe ịgụ.
Dockerfile na-eto:
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/*
Mgbe ahụ Igor Ivanovich, DevOps (ma karịa Ops karịa Dev), gbabara n'ime ụlọ ọrụ na-eti mkpu:
AI: Petya, ndị mmepe gị mebiri nchekwa data nri ọzọ, olee mgbe nke a ga-akwụsị...
Mgbe obere esemokwu gasịrị, Igor Ivanovich dara jụụ wee malite ịchọpụta ihe ndị ọrụ ibe ya na-eme ebe a.
AI: kedu ihe ị na-eme?
Vasily: Pita na-enyere m aka ịmepụta Dockerfile maka modul ọhụrụ.
AI: Ka m lee anya ... Kedu ihe ị dere ebe a, ị na-ehichapụ ebe nchekwa ahụ na iwu dị iche iche, nke a bụ ihe mgbakwunye ọzọ ... Ma olee otu ị ga-esi wụnye ịdabere ma ọ bụrụ na i depụtabeghị Gemfile! Na n'ozuzu, nke a adịghị mma.
Peter: Biko gaa na azụmahịa gị, anyị ga-achọpụta ya n'ụzọ ụfọdụ.
Igor Ivanovich na-asụ ude wee pụọ iji chọpụta onye mebiri nchekwa data ahụ.
Peter: Ee, mana o kwuru eziokwu banyere koodu ahụ, anyị kwesịrị ịkwanye ya na onyonyo a. Ka anyị tinye ssh na onye nlekọta ozugbo, ma ọ bụghị ya, anyị ga-amalite daemons.
Vasily: Mgbe ahụ, m ga-ebu ụzọ detuo Gemfile na Gemfile.lock, mgbe ahụ, m ga-etinye ihe niile, mgbe ahụ, m ga-eṅomi dum oru ngo. Ọ bụrụ na Gemfile agbanweghị, a ga-ewepụ oyi akwa na cache.
Pita: Gini mere unu ji nwe akwa ndia, detuo ihe nile otu oge. Detuo ozugbo. Ahịrị mbụ.
Dockerfile ugbu a dị ka nke a:
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: Ya mere, gịnị ọzọ? Ị nwere nhazi maka onye nlekọta?
Vasily: Mba, mba. Ma m ga-eme ya ngwa ngwa.
Peter: Mgbe ahụ ị ga-eme ya. Ka anyị chepụta edemede init nke ga-ebido ihe niile. Ọ dị mma, yabụ ị malite ssh, jiri nohup, ka anyị nwee ike jikọọ na akpa wee hụ ihe na-adịghị mma. Mgbe ahụ na-agba ọsọ onye nlekọta n'otu ụzọ ahụ. Ọfọn, mgbe ahụ, ị na-agba ọsọ njem.
Ajụjụ: Mana m gụrụ na ekwesịrị inwe otu usoro, yabụ Docker ga-ama na ọ nwere ihe ezighi ezi ma nwee ike ịmalitegharị akpa ahụ.
P: Ejila ihe efu emegbula isi gị. Na n'ozuzu, olee otú? Kedu otu esi eme ihe a niile n'otu usoro? Ka Igor Ivanovich chee echiche banyere nkwụsi ike, ọ bụghị n'efu ka ọ na-enweta ụgwọ ọrụ. Ọrụ anyị bụ ide koodu. Na n'ozuzu, ka ọ sị daalụ na anyị deere ya Dockfile.
Nkeji 10 na vidiyo abụọ gbasara nwamba ka emechara.
Ajụjụ: Emeela m ihe niile. Agbakwunyere m nkọwa ndị ọzọ.
P: Gosi m!
Ụdị Dockerfile kacha ọhụrụ:
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: Ọ dị mma, ọ masịrị m. Na nkọwa ndị dị na Russian, adaba na ịgụ, onye ọ bụla ga-arụ ọrụ dị otú ahụ. A kụziiri m gị ihe niile, ị nwere ike ime nke fọdụrụ n'onwe gị. Ka anyị gaa rie kọfị...
Ọfọn, ugbu a, anyị nwere Dockerfile dị egwu nke ọma, anya nke ga-eme ka Igor Ivanovich chọọ ịkwụsị na anya ya ga-afụ ụfụ maka izu ọzọ. Dockerfile, n'ezie, nwere ike ịka njọ, enweghị oke na izu oke. Ma maka mmalite, nke a ga-eme.
Ọ ga-amasị m ịkwụsị n'okwu sitere na Grigory Oster:
Ọ bụrụ na ịmabeghị nke ọma
Anyị họọrọ ụzọ ndụ,
Ma ị maghị ihe kpatara ya
Malite njem ọrụ gị,
Gbajie bọlbụ ọkụ n'ime paseeji -
Ndị mmadụ ga-asị gị "I meela" gị.
Ị ga-enyere ndị mmadụ aka
Chekwa ọkụ eletrik.
isi: www.habr.com