ډاکر: بد مشوره

ډاکر: بد مشوره

کله چې ما د موټر چلولو زده کړه کوله، په لومړي درس کې ښوونکي په شا کې څلور لارې ته ورغی، او بیا یې وویل چې تاسو باید دا کار ونه کړئ - هیڅکله هم نه. ما دا قانون سمدستي او زما د پاتې ژوند لپاره یاد کړ.

تاسو ماشومانو ته د ګریګوري اوسټر لخوا "بد نصیحت" ولولئ ، او تاسو ګورئ چې څومره په اسانۍ او طبیعي ډول دا په دوی باندې راپورته کیږي چې دوی باید دا ونه کړي.

د ډاکر فایل په سمه توګه لیکلو څرنګوالي په اړه ډیری مقالې لیکل شوي. مګر زه د غلط ډاکر فایلونو لیکلو څرنګوالي په اړه لارښوونې نه لرم. زه دا تشه ډکوم. او شاید په هغو پروژو کې چې زه یې ملاتړ ترلاسه کوم، د داسې ډاکر فایلونه به لږ وي.

ټول کرکټرونه، حالتونه او ډاکرفایل جعلي دي. که تاسو خپل ځان پیژنئ، بښنه وکړئ.

د ډاکر فایل رامینځته کول ، ناوړه او ویرونکي

پیټر (لوړ جاوا / روبي / پی ایچ پی جوړونکی): همکار واسیلي ، ایا تاسو دمخه ډاکر ته نوی ماډل اپلوډ کړی؟
واسیلي (جونی): نه، ما وخت نه درلود، زه نشم کولی دا د دې ډاکر سره معلومه کړم. په دې کې ډیری مقالې شتون لري، دا حیرانتیا ده.

پیټر: موږ یو کال دمخه نیټه درلوده. اجازه راکړئ تاسو سره مرسته وکړم، موږ به یې په پروسه کې معلوم کړو. ما ته ووایاست چې ستاسو لپاره څه کار نه کوي.

واسیلي: زه نشم کولی یو بنسټیز عکس غوره کړم چې دا خورا لږ وي، مګر هرڅه چې تاسو ورته اړتیا لرئ لري.
پیټر: د اوبنټو عکس واخلئ ، دا هرڅه لري چې تاسو ورته اړتیا لرئ. او هغه څه چې ډیری غیر ضروري شیان دي وروسته به په لاس کې راشي. او د وروستي ټګ ایښودل مه هیروئ ترڅو نسخه تل تازه وي.

او لومړۍ کرښه په ډاکر فایل کې ښکاري:

FROM ubuntu:latest

پیټر: بیا څه شی دی، موږ د خپل ماډل لیکلو لپاره څه کارولي؟
واسیلي: نو روبي، یو ویب سرور شتون لري او یو څو خدمت ډیمونونه باید په لاره واچول شي.
پیټر: هو، موږ څه ته اړتیا لرو: روبي، بنډلر، نوډز، امیج میګک او نور څه ... او په ورته وخت کې، د نوي کڅوړو ترلاسه کولو لپاره یو اپ گریڈ وکړئ.
واسیلي: او موږ به یو کارن جوړ نه کړو ترڅو موږ د ریښې لاندې نه یو؟
پیټر: دا وخورئ، نو بیا تاسو باید د حقونو په اړه احمق یاست.
واسیلي: زه وخت ته اړتیا لرم، شاوخوا 15 دقیقې، چې دا ټول په یوه کمانډ کې یوځای کړم، ما لوستل ...
(پیټر په بې رحمۍ سره د پیچلي او خورا هوښیار جونیر سره مداخله کوي.)
پیټر: په جلا حکمونو کې ولیکئ، لوستل به یې اسانه وي.

Dockerfile وده کوي:

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

بیا ایګور ایوانوویچ، DevOps (مګر د Dev په پرتله ډیر عملیات)، دفتر ته ننوځي چیغې وهي:

AI: پیټیا ، ستاسو پراختیا کونکو د خواړو ډیټابیس بیا مات کړ ، دا به کله پای ته ورسیږي ...

د یوې کوچنۍ نښتې وروسته، ایګور ایوانوویچ یخ شو او د دې موندلو لپاره یې پیل وکړ چې د هغه همکاران دلته څه کوي.

AI: تاسو څه کوئ؟
واسیلي: پیټر زما سره د نوي ماډل لپاره د ډاکر فایل رامینځته کولو کې مرسته کوي.
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/* 

پیټر: نو، بیا څه؟ ایا تاسو د څارونکي لپاره تشکیلات لرئ؟
واسیلي: نه، نه. مګر زه به یې ژر تر ژره وکړم.
پیټر: بیا به تاسو دا وکړئ. راځئ چې اوس یو init سکریپټ جوړ کړو چې هرڅه به پیل کړي. ښه، نو تاسو د نوپ سره ssh پیل کړئ، ترڅو موږ کولی شو کانټینر سره وصل کړو او وګورو چې څه غلط شوي. بیا په ورته ډول څارونکي چلوي. ښه، نو تاسو یوازې مسافر چلوئ.
پوښتنه: مګر ما لوستل چې باید یوه پروسه وي ، نو ډاکر به پوه شي چې یو څه غلط شوی او کولی شي کانټینر بیا پیل کړي.
پ: خپل سر په فضول خبرو مه خپه کوه. او په عمومي توګه، څنګه؟ تاسو دا ټول په یوه پروسه کې څنګه پرمخ وړئ؟ اجازه راکړئ چې ایګور ایوانوویچ د ثبات په اړه فکر وکړي، دا د هیڅ شی لپاره نه دی چې هغه معاش ترلاسه کوي. زموږ دنده د کوډ لیکل دي. او په عموم کې، اجازه راکړئ چې ووایه مننه چې موږ د هغه لپاره ډاک فایل لیکلی.

د پیشوګانو په اړه 10 دقیقې او دوه ویډیوګانې وروسته.

پوښتنه: ما هر څه وکړل. ما نور نظرونه اضافه کړل.
پ: ماته وښایاست!

د 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، البته، حتی بدتر کیدی شي، د بشپړتیا لپاره هیڅ حد شتون نلري. مګر د پیل لپاره، دا به وکړي.

زه غواړم د ګریګوري اوسټر څخه د یوې اقتباس سره پای ته ورسیږم:

که تاسو لاهم ډاډه نه یاست
موږ په ژوند کې لاره غوره کړه
او تاسو نه پوهیږئ ولې
خپل د کار سفر پیل کړئ،
په دالانونو کې د رڼا بلبونه مات کړئ -
خلک به تاسو ته "مننه" ووایي.
تاسو به د خلکو سره مرسته وکړئ
بریښنا خوندي کړئ.

سرچینه: www.habr.com

Add a comment