Docker: ndụmọdụ ọjọọ

Docker: ndụmọdụ ọjọọ

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

Tinye a comment