
ááŹá¸ááąáŹááşá¸áááŻáˇ áááşáá°ááąááťáááş ááááááşáááşá¸á áŹáážáŹ áááşá¸ááźáááŹá áááşá¸ááŻáśáááşá¸áá˝ááᯠááźáąáŹááşá¸ááźááşááąáŹááşá¸ááŹááźáŽá¸ ááŻáśá¸ááááŻááşáááˇáşáá°á¸áááŻáˇ ááźáąáŹáááşá ááŽá ááşá¸áááşá¸ááᯠááťááşááźááşá¸ááááááźáŽá¸ áá áşáááşááŻáśá¸ áááááá˝áŹá¸áááşá
áááąá¸ááťáŹá¸áĄáá˝ááş 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
