áá¬ážáá±á¬ááºážááá¯á· áááºáá°áá±áá»ááẠááááááºáááºážá á¬ááŸá¬ áááºážááŒááá¬á áááºážáá¯á¶áááºážááœááᯠááŒá±á¬ááºážááŒááºáá±á¬ááºážáá¬ááŒá®áž áá¯á¶ážáááá¯ááºááá·áºáá°ážááá¯á· ááŒá±á¬áááºá áá®á ááºážáááºážááᯠáá»ááºááŒááºážááááááŒá®áž áá áºáááºáá¯á¶áž ááááááœá¬ážáááºá
ááá±ážáá»á¬ážá¡ááœáẠGrigory Oster á០"ááá±á¬ááºážáá²á·á¡ááŒá¶áá¬ááº" ááᯠáááºáááºááŒá®áž áá«ááᯠááá¯ááºááá·áºáá¬ááᯠá¡ááœááºááá°áá²á· ááá¬ááá»áá»áá²á· ááááá¯ááºáá«áááºá
Dockerfile ááᯠááŸááºáááºá áœá¬áá±ážáá¬ážáááºáž áá±á¬ááºážáá«ážáá»á¬ážá áœá¬ááᯠáá±ážáá¬ážáá¬ážáááºá áá«áá±ááá·áº Dockerfiles áááŸááºááááºáááºááá¯áá±ážáááá²ááá¯áá²á· ááœáŸááºááŒá¬ážáá»ááºááœá±ááᯠáá»áœááºáá±á¬áºáááœá±á·áááá«áá°ážá áá®ááœááºáááºááᯠáá«ááŒáá·áºáá±áááºá áá»áœááºá¯ááºá áá¶á·ááá¯ážáá°áá®ááŸá¯áááŸáááá·áº ááá±á¬áá»ááºáá»á¬ážááœááºáááºáž ááá¯áá²á·ááá¯á·áá±á¬ dockerfiles á¡áááºážáááºáᬠááŸááá«áááºá
áá¬ááºáá±á¬ááºáá»á¬ážá á¡ááŒá±á¡áá±áá»á¬ážááŸáá·áº Dockerfile á¡á¬ážáá¯á¶ážááẠá áááºáá°ážáááºáááºáááºá ááá¯áá·áºááá¯ááºááᯠá¡ááá¡ááŸááºáááŒá¯ááẠáá±á¬ááºážáááºáá«áááºá
Dockerfile áá áºáá¯ááᯠáááºáá®ážáá±áááºá áá°ážáááºážááŒá®áž ááŒá±á¬ááºáááºááœááºáá±á¬ááºážáááºá
Peter (á¡ááŒá®ážáááºáž java/rubby/php developer)- áá¯ááºáá±á¬áºááá¯ááºááẠVasilyá áááºááẠDocker ááá¯á· module á¡áá
áºáá
áºáá¯ááᯠá¡ááºáá¯ááºáá¯ááºááŒá®ážááŒá®áá¬ážá
Vasily (á¡áááºáááºáž)- ááá¯ááºáá°ážá áá«á·ááŸá¬ á¡áá»áááºáááŸááá°ážá áá® Docker áá²á· áá« á¡ááŒá±ááŸá¬ááá¯á· áááá°ážá áá±á¬ááºážáá«ážááœá± á¡áá»á¬ážááŒá®ážááŸááááºá áá±á«ááºážáá°ážáááºá
Peter - ááœááºáá²á·áá²á·áá áºááŸá áºáá±á¬ááºá áá»áœááºáá±á¬áºááá¯á·ááŸá¬ áá±á¬ááºáá¯á¶ážáááºááŸááááºá áá°áá®áá«áá á±á áá¯ááºáááºážá ááºááŸá¬ á¡ááŒá±áá¯ááºáááºá áááºážá¡ááœááºá¡áááºáááŒá±áá°ážááá¯áᬠáá«á·ááá¯ááŒá±á¬áá«á
Vasily- á¡áááºážáááºáá»áŸáá¬ááŸáá
á±ááẠá¡ááŒá±áá¶áá¯á¶áá
áºáá¯á¶ááᯠáá»áœááºá¯ááºáááœá±ážáá»ááºááá¯ááºáá«á ááá¯á·áá±á¬áº áááºááá¯á¡ááºááá»áŸ ááŸááá«áááºá
áá±ááá¯- ubuntu áá¯á¶ááá¯áá°áá«á áááºááá¯á¡ááºááá»áŸáá«ááŸááááºá ááŒá®ážáá±á¬á· áááá¯á¡ááºáá²á· á¡áá¬ááœá± á¡áá»á¬ážááŒá®ážá áá±á¬ááºááá¯ááºážááŸá¬ á¡áááºááŒá±áá¬áááá·áºáááºá áá¬ážááŸááºážá¡ááŒá²áááºážáá±á¬ááºáá¯á¶ážáá±á«áºááŒá
áºáá±á
á±ááẠáá±á¬ááºáá¯á¶ážáá±á«áº tag ááá¯ááá·áºáááºááá±á·áá«ááŸáá·áºá
Dockerfile ááœáẠáááá á¬ááŒá±á¬ááºáž áá±á«áºáá¬ááẠá
FROM ubuntu:latest
áá±ááá¯- áá±á¬ááºáá
áºáá¯á áá¬áá²á
Vasily - ááá¯á·ááŒá±á¬áá·áº ááá¹áááŒá¬ážá áááºáá¬áá¬áá
áºáá¯ááŸáááŒá®áž áááºáá±á¬ááºááŸá¯ daemons ááŸá
áºáá¯ááᯠá
áááºááá·áºáááºá
Peter - áá¯ááºáááºá áá«ááá¯á· áá¬ááá¯ááá²- rubyá bundlerá nodejsá imagemagick áá²á· áááŒá¬ážáá¬ááœá±áá²... ááŒá®ážáá±á¬á· áá
áºáá»áááºáááºážááŸá¬áá² áááºáá±á·áá»áºá¡áá
áºááœá±ááᯠáá±áá»á¬áá±á«ááºáááá¯á·á¡ááœáẠá¡ááá·áºááŒáŸáá·áºáááºááŸá¯áá
áºáá¯áá¯ááºáá«á
Vasily- áá»áœááºá¯ááºááá¯á·ááẠroot á¡á±á¬ááºááœááºáááŸáá
á±áááºá¡áá¯á¶ážááŒá¯áá°ááá¯áááºáá®ážáááºááá¯ááºáá«á
áá±ááá¯: áá¬ážá áá«ááᯠáááºáž á¡ááœáá·áºá¡áá±ážááœá±áá²á· ááŸáá·áºá
á¬ážáá±áá±ážáááºá
Vasily : á¡á¬ážáá¯á¶ážááᯠcommand áá
áºáá¯áá²ááᯠáá±á«ááºážááá·áºááá¯á· 15 áááá
áºáá±á¬áẠá¡áá»áááºááá¯áá«áááº...
(áá®áá¬ááẠá
á±á·á
á±á·á
ááºá
ááºááŸáá·áº á¡ááœááºáááºááŒááºáá±á¬ áá»á°áá®áá¬ááᯠááá¯ááºážááá¯ááºážá
áá¯ááºážá
áá¯ááºáž ááŸá±á¬ááºááŸááºáááºá)
áá±ááá¯- áá®ážááŒá¬áž command áá»á¬ážááŒáá·áºáá±ážáá«á áááºážáááºáááºáááºááá¯ááá¯ááœááºáá°áááá·áºáááºá
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/*
ááá¯á·áá±á¬áẠIgor Ivanovichá DevOps (áá«áá±ááá·áº Dev ááẠOps ááá¯áá»á¬ážáááº) á áá¯á¶ážáááºážáá²ááá¯á· ááŸááºážá¡á±á¬áºáááºá
AI- Petyaá áááºážáá²á· developer ááœá±á á¡á á¬ážá¡áá±á¬ááºáá±áá¬áá±á·á áºááᯠáááºááŒá®ážáá»áá¯ážáá»ááºááá¯ááºáá¬á áá«á áááºáá±á¬á·ááŒá®ážááá²...
ááá¯ááºááœá²áááºáá áºáá¯ááŒá®ážáá±á¬ááºá Igor Ivanovich á áááºá¡á±ážááœá¬ážááŒá®áž áá°á·áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬áž á€áá±áá¬ááœáẠáá¬áá¯ááºáá±áááºááᯠá áááºááááŸááá¬áááºá
AI : áááºáž áá¬áá¯ááºáá±áá¬áá²á
Vasily- áá±ááá¯ááẠáá±á¬áºáá»á°ážá¡áá
áºá¡ááœáẠDockerfile áááºáá®ážááẠáá°áá®áá±ážáá±áááºá
AI- ááŒáá·áºáá«áá
á±... áááºážáá®ááŸá¬ áá¬áá±ážáá¬ážáá²á áá®ážááŒá¬áž command áá²á· repository ááá¯ááŸááºážááá¯ááºá áá«á áá±á¬ááºáááºá¡ááœáŸá¬áá
áºáá¯áá«... áá«áá±ááá·áº Gemfile ááá¯ááá°ážáá¬ážááẠáááºááᯠinstall áá¯ááºááá²á áá±áá¯áá»á¡á¬ážááŒáá·áºáá±á¬á· áá«á ááá±á¬ááºážáá«áá°ážá
áá±ááá¯- áá»á±ážáá°ážááŒá¯ááŒá®áž áááºážáá²á·áá¯ááºáááºážááᯠááœá¬ážáá«á áá«ááá¯á·á á¡á²áá«ááᯠáá
áºáááºážáááºážáá²á· ááŒá±ááŸááºážááá¯ááºáááºá
Igor Ivanovich á áááºážáááºážá áœá¬ áááºááŒááºážáá»ááá¯ááºááŒá®áž áá±áá¬áá±á·á áºááᯠáááºáá°á áá»áá¯ážáá»ááºááá¯ááºáá² ááá¯áᬠááááá¯á· ááœááºááœá¬ážáá²á·áááºá
áá±ááá¯- áá¯ááºáááºá áá«áá±ááá·áº áá°á áá¯ááºá¡ááŒá±á¬ááºáž ááŸááºáááºá áá«ááá¯á·á á¡á²áá«ááᯠáá¯á¶áá²ááᯠááœááºážááá¯á·ááááºá ááŒá®ážáá»áŸáẠssh ááŸáá·áº supervisor ááá¯áá»ááºáá»ááºážááá·áºááœááºážááŒáá«á áá¯á·á ááá¯ááºáá«á daemons ááá¯á áááºáá«áááºá
Vasily- ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááẠGemfile ááŸáá·áº Gemfile.lock ááᯠáŠážá
áœá¬ áá°ážáá°áááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážáááºááŒá
áºááŒá®ážá ááá¯á·áá±á¬áẠááá±á¬áá»ááºáá
áºáá¯áá¯á¶ážááᯠáá°ážáá°áááºááŒá
áºáááºá Gemfile áááŒá±á¬ááºážáá«áá layer ááᯠcache á០áá°ááœá¬ážáá«áááºá
áá±ááá¯- áááºážáá¬ááá¯á· áá®á¡ááœáŸá¬ááœá±ááŸááá±áá¬áá²á á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá
áºáá«áááºáž áá°ážáá°ááá¯ááºá áá»ááºáá»ááºážáá°ážáá°áá«á ááááááºážá
ááᯠ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/*
Peter: áá«ááᯠáá¬áááºáá¯ááºááá²á ááŒá®ážááŒááºáá±ážááŸá°ážá¡ááœáẠááŒááºáááºááŸá¯áá»á¬áž ááŸááá«ááá¬ážá
Vasily: ááá¯ááºáá°ážá ááá¯ááºáá°ážá áá«áá±ááá·áº áá«ááŒááºááŒááºáá¯ááºáááºá
Peter: áá«ááᯠáááºážáá¯ááºáááºá á¡áá¯áá² á¡áá¬á¡á¬ážáá¯á¶ážááᯠá
áááºááá¯ááºááá·áº init script ááᯠáá¯á¶áá±á¬áºááŒáá·áºáá¡á±á¬ááºá á¡áá¯áá±á ááá¯á·ááŒá±á¬áá·áº áááºááẠsshá nohup ááŒáá·áº á
áááºáááºá ááá¯á·ááŸáᬠáá»áœááºá¯ááºááá¯á·ááẠááœááºááááºáá¬ááá¯á· áá»áááºáááºá á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŒáá·áºááŸá¯ááá¯ááºáááºááŒá
áºáááºá ááá¯á·áá±á¬áẠááŒá®ážááŒááºáá±ážááŸá°ážááᯠááá¯áááºážá¡ááá¯ááºáž áá¯ááºáá±á¬ááºáá«á áá«ááᯠáááºážááá®ážáááºáá² ááŒá±ážáááºá
áá±áž- áá«áá±ááá·áº áá¯ááºáááºážá
ááºáá
áºáá¯ááŸáááá·áºáááºááá¯á· áá»áœááºáá±á¬áºáááºáááááºá áá«ááŒá±á¬áá·áº Docker á áá
áºáá¯áá¯ááŸá¬ážááœá¬ážááá¯á· ááœááºááááºáá¬ááᯠááŒááºáááºá
áááºááá¯ááºáááºááá¯áá¬ááᯠDocker áááá«áááá·áºáááºá
P : áááºážáá±á«ááºážááᯠá¡áááá¹áá«ááºáá²á·á
áœá¬ áááŸá±á¬áá·áºááŸááºáá«áá²á·á áá±áá¯áá»á¡á¬ážááŒáá·áºá áááºááá¯áá²á áá¯ááºáááºážá
ááºáá
áºáá¯áááºážááœáẠá€á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáááºáá²á·ááá¯á·áá¯ááºáá±á¬ááºááááºážá Igor Ivanovich ááẠáááºááŒáááºááŸá¯ááŸáá·áºáááºáááºá ááœá±ážááŒáá·áºáá«á
á±á áááºážááẠáá
á¬áááŸáááŒááºážá¡ááœáẠááá¯ááºáá«á áá»áœááºáá±á¬áºááá¯á·á¡áá¯ááºá áá¯ááºáá±ážááá¯á·áá«á áá±áá°áá»á¡á¬ážááŒáá·áºá áá°á·á¡ááœáẠDockefile ááᯠáá±ážáá±ážáá²á·á¡ááœáẠáá»á±ážáá°ážáááºááŒá±á¬ááºáž ááŒá±á¬áá«á
á±á
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 áá áºáá¯ááŸááááºá Igor Ivanovich áá¯ááºááœááºááá¯ááŒá®áž áá°á·áá»ááºáá¯á¶ážáá»á¬ážááẠáá±á¬ááºáá áºáááºá¡áá áá¬áá»ááºá á±ááá·áº ááŒááºááœááºážáá áºáá¯ááŸááááºá Dockerfile ááẠááá¯ááááºááá¯ážááœá¬ážááá¯ááºáááºá ááŒá®ážááŒáá·áºá á¯á¶áááºááá·áºáááºáá»ááºáááŸááá«á áá«áá±ááá·áº á¡á ááá¯ááºážááŸá¬áá±á¬á· áá®ááá¯áá¯ááºáá«áááá·áºáááºá
Grigory Oster áááá¯ážáá¬ážáá»ááºááŒáá·áº á¡áá¯á¶ážáááºááá¯áá«áááºá
ááá±áá»á¬áá±ážáááº
áááááºážááᯠáá«ááá¯á·ááœá±ážáá»ááºáá²á·áááº
á¡ááá·áºááŒá±á¬áá·áºááá¯áá±á¬áº áááºááááá«á
áááºážáá²á· á¡áá¯ááºááŒááºážááá®ážááᯠá
áááºááá¯ááºáá«
á
ááºá¹ááŒá¶ááŸá áá®ážáá®ážáá»á¬ážááᯠáá»áá¯ážáá«-
áá°ááœá±á áááºážááᯠ"áá»á±ážáá°ážáááºáá«áááº" ááá¯á·ááŒá±á¬áááá·áºáááºá
áá°ááœá±ááᯠáá°áá®áááºá
áá»áŸááºá
á
áºáá¬ááºá¡á¬áž ááááºážáááºážáá«á
source: www.habr.com