ዶከር፡ መጥፎ ምክር

ዶከር፡ መጥፎ ምክር

መኪና መንዳት እየተማርኩ በነበርኩበት ጊዜ አስተማሪው በመጀመርያው ትምህርት ወደ መስቀለኛ መንገዱ በግልባጭ ገባ እና ከዚያ ይህን ማድረግ የለብህም - በጭራሽ። ይህንን ህግ ወዲያውኑ እና በቀሪው ሕይወቴ አስታውሳለሁ.

"መጥፎ ምክር" በግሪጎሪ ኦስተር ለልጆች ታነባለህ፣ እና ይህን ማድረግ እንደሌለባቸው እንዴት በቀላሉ እና በተፈጥሮ እንደወጣላቸው ታያለህ።

Dockerfile በትክክል እንዴት እንደሚፃፍ ብዙ ጽሑፎች ተጽፈዋል። ግን የተሳሳቱ ዶከርፋይሎችን እንዴት እንደሚጽፉ መመሪያዎችን አላጋጠመኝም። ይህንን ክፍተት እየሞላሁ ነው። እና ምናልባት ድጋፍ ባገኘኋቸው ፕሮጀክቶች ውስጥ፣ እንደዚህ አይነት ዶከርፋይሎች ያነሱ ይሆናሉ።

ሁሉም ቁምፊዎች፣ ሁኔታዎች እና ዶከርፋይል ምናባዊ ናቸው። እራስዎን ካወቁ, ይቅርታ.

Dockerfile መፍጠር፣ አስጸያፊ እና አስፈሪ

ፒተር (የጃቫ/ሩቢ/ፒኤችፒ ገንቢ)፡ ባልደረባ ቫሲሊ፣ አዲስ ሞጁል ወደ ዶከር ሰቅለሃል?
ቫሲሊ (ጁኒየር): አይ፣ ጊዜ አልነበረኝም፣ በዚህ ዶከር ልረዳው አልችልም። በላዩ ላይ በጣም ብዙ ጽሑፎች አሉ, ማዞር ነው.

ፒተር፡- ከአንድ ዓመት በፊት ቀነ ገደብ ነበረን። ልረዳህ፣ በሂደቱ እንረዳዋለን። የማይጠቅምህን ንገረኝ።

ቫሲሊ: አነስተኛ እንዲሆን መሰረታዊ ምስል መምረጥ አልችልም, ነገር ግን የሚያስፈልጎት ነገር ሁሉ አለው.
ፒተር፡ የኡቡንቱን ምስል ያንሱ፣ የሚያስፈልጓቸው ነገሮች ሁሉ አሉት። እና ብዙ አላስፈላጊ ነገሮች በኋላ ላይ ጠቃሚ ይሆናሉ. እና ስሪቱ ሁል ጊዜ የቅርብ ጊዜ እንዲሆን የቅርብ ጊዜውን መለያ ማድረጉን አይርሱ።

እና የመጀመሪያው መስመር በ Dockerfile ውስጥ ይታያል-

FROM ubuntu:latest

ጴጥሮስ፡- ቀጥሎ ምን አለ፣ ሞጁላችንን ለመጻፍ ምን ተጠቀምን?
ቫሲሊ፡ ስለዚህ ሩቢ የድር አገልጋይ አለ እና ሁለት የአገልግሎት ዲሞኖች መጀመር አለባቸው።
ፒተር: አዎ, ምን ያስፈልገናል: ruby, bundler, nodejs, imagemagick እና ሌላ ምን ... እና በተመሳሳይ ጊዜ, በእርግጠኝነት አዲስ ፓኬጆችን ለማግኘት አሻሽል ያድርጉ.
ቫሲሊ: እና እኛ ስር እንዳንሆን ተጠቃሚ አንፈጥርም?
ፒተር፡ ባክህ አሁንም በመብቱ ማሞኘት አለብህ።
ቫሲሊ፡ ሁሉንም ወደ አንድ ትዕዛዝ ለማሰባሰብ 15 ደቂቃ ያህል ጊዜ እፈልጋለሁ፣ ያንን አንብቤያለሁ...
(ጴጥሮስ ጨዋውን እና በጣም ብልህ የሆነውን ጁኒየር በጨዋነት አቋረጠው።)
ፒተር: በተለየ ትዕዛዝ ጻፍ, ለማንበብ ቀላል ይሆናል.

ዶከርፋይል ያድጋል:

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

ከዚያ ኢጎር ኢቫኖቪች ፣ ዴቭኦፕስ (ግን ከዴቭ የበለጠ ኦፕስ) ፣ በመጮህ ወደ ቢሮው ገባ ።

AI፡ ፔትያ፣ የእርስዎ ገንቢዎች የምግብ ዳታቤዝ እንደገና ሰበሩ፣ ይህ መቼ ነው የሚያበቃው...

ከትንሽ ግጭት በኋላ ኢጎር ኢቫኖቪች ቀዝቅዘው እና ባልደረቦቹ እዚህ ምን እየሰሩ እንደሆነ ማወቅ ይጀምራል።

AI: ምን እየሰራህ ነው?
ቫሲሊ፡ ፒተር ለአዲስ ሞጁል Dockerfile እንድፈጥር እየረዳኝ ነው።
AI: እስቲ ልይ... እዚህ ምን ፃፍክ፣ ማከማቻውን በተለየ ትዕዛዝ አጽድተሃል፣ ይህ ተጨማሪ ንብርብር ነው... ግን Gemfile ን ካልገለበጡ ጥገኞችን እንዴት እንደሚጭኑ! እና በአጠቃላይ ይህ ጥሩ አይደለም.
ፒተር፡ እባክህ ስለ ንግድህ ሂድ፣ በሆነ መንገድ እንረዳዋለን።

ኢጎር ኢቫኖቪች በሀዘን ተነፈሰ እና የመረጃ ቋቱን ማን እንደሰበረው ለማወቅ ወጣ።

ፒተር፡- አዎ፣ እሱ ግን ስለ ኮዱ ትክክል ነበር፣ ወደ ምስሉ መግፋት አለብን። እና ወዲያውኑ ssh እና ሱፐርቫይዘርን እንጭን, አለበለዚያ ዲሞኖችን እንጀምራለን.

ቫሲሊ: በመጀመሪያ Gemfile እና Gemfile.lockን እገለብጣለሁ, ከዚያም ሁሉንም ነገር እጭነዋለሁ, ከዚያም ሙሉውን ፕሮጀክት እገለብጣለሁ. Gemfile ካልተቀየረ, ንብርብር ከመሸጎጫው ይወሰዳል.
ፒተር፡- ለምንድነው ሁላችሁም በእነዚህ ንብርብሮች ያላችሁት ሁሉንም ነገር በአንድ ጊዜ ይቅዱ። ወዲያውኑ ይቅዱ። በጣም የመጀመሪያ መስመር.

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

ፒተር፡- እንግዲህ ቀጥሎስ? ለሱፐርቫይዘሮች ውቅሮች አሉዎት?
ቫሲሊ፡ አይ፣ አይሆንም። ግን በፍጥነት አደርገዋለሁ።
ጴጥሮስ፡ ያኔ ታደርጋለህ። አሁን ሁሉንም ነገር የሚያስጀምር የኢኒት ስክሪፕት እንስራ። እሺ፣ ከኮንቴይነር ጋር ለመገናኘት እና ምን እንደተፈጠረ ለማየት እንድንችል sshን በ nohup ጀምር። ከዚያ ተቆጣጣሪውን በተመሳሳይ መንገድ ያሂዱ። እንግዲህ ተሳፋሪ ብቻ ነው የምትሮጠው።
ጥ፡ ግን አንድ ሂደት መኖር እንዳለበት አንብቤያለሁ፣ ስለዚህ Docker የሆነ ችግር እንደተፈጠረ ያውቃል እና መያዣውን እንደገና ማስጀመር ይችላል።
P: ጭንቅላትህን በማይረባ ነገር አታስቸግረው. እና በአጠቃላይ እንዴት? ይህንን ሁሉ በአንድ ሂደት ውስጥ እንዴት ያካሂዳሉ? ኢጎር ኢቫኖቪች ስለ መረጋጋት ያስቡ, ደመወዝ የሚቀበለው በከንቱ አይደለም. የእኛ ስራ ኮድ መጻፍ ነው. እና በአጠቃላይ፣ ዶክፋይልን ስለፃፍንለት አመሰግናለሁ ይበል።

በኋላ ስለ ድመቶች 10 ደቂቃዎች እና ሁለት ቪዲዮዎች።

ጥ፡ ሁሉንም ነገር ሠርቻለሁ። ተጨማሪ አስተያየቶችን ጨምሬያለሁ።
P: አሳየኝ!

የቅርብ ጊዜ የ 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: በጣም ጥሩ፣ ወድጄዋለሁ። እና አስተያየቶቹ በሩሲያኛ, ምቹ እና ሊነበቡ የሚችሉ ናቸው, ሁሉም ሰው እንደዚያው ይሰራል. ሁሉንም ነገር አስተማርኩህ, የቀረውን ራስህ ማድረግ ትችላለህ. ቡና እንጠጣ...

ደህና ፣ አሁን ፍጹም አስፈሪ ዶከርፋይል አለን ፣ የእይታ እይታ ኢጎር ኢቫኖቪች ለማቆም ይፈልጋል እና ዓይኖቹ ለሌላ ሳምንት ይጎዳሉ። Dockerfile, በእርግጥ, የበለጠ የከፋ ሊሆን ይችላል, ወደ ፍጹምነት ምንም ገደብ የለም. ግን ለመጀመሪያ ጊዜ ይህ ይሠራል.

በግሪጎሪ ኦስተር ጥቅስ ልቋጭ እፈልጋለሁ፡-

እስካሁን እርግጠኛ ካልሆኑ
የሕይወትን መንገድ መርጠናል ፣
እና ለምን እንደሆነ አታውቁም
የጉልበት ጉዞዎን ይጀምሩ ፣
በኮሪደሩ ውስጥ ያሉትን አምፖሎች ይሰብሩ -
ሰዎች "አመሰግናለሁ" ይሉሃል።
ህዝቡን ትረዳለህ
ኤሌክትሪክ ይቆጥቡ.

ምንጭ: hab.com

አስተያየት ያክሉ