เดกเต‹เด•เตเด•เตผ: เดฎเต‹เดถเด‚ เด‰เดชเดฆเต‡เดถเด‚

เดกเต‹เด•เตเด•เตผ: เดฎเต‹เดถเด‚ เด‰เดชเดฆเต‡เดถเด‚

เดžเดพเตป เด’เดฐเต เด•เดพเตผ เด“เดŸเดฟเด•เตเด•เดพเตป เดชเด เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดฆเตเดฏ เดชเดพเด เดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† เด‡เตปเดธเตเดŸเตเดฐเด•เตเดŸเตผ เด•เดตเดฒเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดชเดฐเต€เดคเดฎเดพเดฏเดฟ เด“เดŸเดฟเดšเตเดšเต, เดŽเดจเตเดจเดฟเดŸเตเดŸเต เดจเดฟเด™เตเด™เตพ เด…เดคเต เดšเต†เดฏเตเดฏเดฐเตเดคเต†เดจเตเดจเต เดชเดฑเดžเตเดžเต - เด’เดฐเดฟเด•เตเด•เดฒเตเด‚. เดˆ เดจเดฟเดฏเดฎเด‚ เด‰เดŸเดจเดŸเดฟ เดžเดพเตป เด“เตผเดคเตเดคเต, เดŽเดจเตเดฑเต† เดœเต€เดตเดฟเดคเด•เดพเดฒเด‚ เดฎเตเดดเตเดตเตป.

เด•เตเดŸเตเดŸเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เด—เตเดฐเดฟเด—เดฑเดฟ เด“เดธเตเดฑเตเดฑเตผ เดŽเดดเตเดคเดฟเดฏ "เดฎเต‹เดถเดฎเดพเดฏ เด‰เดชเดฆเต‡เดถเด‚" เดจเดฟเด™เตเด™เตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเตผ เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดชเดพเดŸเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดŽเดคเตเดฐ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเด‚ เดธเตเดตเดพเดญเดพเดตเดฟเด•เดฎเดพเดฏเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต.

เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฟเตฝ เดŽเด™เตเด™เดจเต† เดถเดฐเดฟเดฏเดพเดฏเดฟ เดŽเดดเตเดคเดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดงเดพเดฐเดพเดณเด‚ เดฒเต‡เด–เดจเด™เตเด™เตพ เดŽเดดเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดŽเดจเตเดจเดพเตฝ เดคเต†เดฑเตเดฑเดพเดฏ เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเตเด•เตพ เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดžเดพเตป เด•เดฃเตเดŸเดฟเดฒเตเดฒ. เดžเดพเตป เดˆ เดตเดฟเดŸเดตเต เดจเดฟเด•เดคเตเดคเตเด•เดฏเดพเดฃเต. เดŽเดจเดฟเด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ, เด…เดคเตเดคเดฐเด‚ เดกเต‹เด•เตเด•เตผ เดซเดฏเดฒเตเด•เตพ เด•เตเดฑเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เดŽเดฒเตเดฒเดพ เด•เดฅเดพเดชเดพเดคเตเดฐเด™เตเด™เดณเตเด‚ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเตเด‚ เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเตเด‚ เดธเดพเด™เตเด•เตฝเดชเตเดชเดฟเด•เดฎเดพเดฃเต. เดจเดฟเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด•เตเดทเดฎเดฟเด•เตเด•เดฃเด‚.

เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดถเตเดญเด•เดฐเดตเตเด‚ เดญเดฏเด™เตเด•เดฐเดตเตเดฎเดพเดฃเต

เดชเต€เดฑเตเดฑเตผ (เดธเต€เดจเดฟเดฏเตผ เดœเดพเดต/เดฑเต‚เดฌเดฟ/เดชเดฟเดŽเดšเตเดšเตเดชเดฟ เดกเต†เดตเดฒเดชเตเดชเตผ): เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เดจเดพเดฏ เดตเดพเดธเดฟเดฒเดฟ, เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดกเต‹เด•เตเด•เดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เดฎเตŠเดกเตเดฏเต‚เตพ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตโ€ŒเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹?
เดตเดพเดธเดฟเดฒเดฟ (เดœเต‚เดจเดฟเดฏเตผ): เด‡เดฒเตเดฒ, เดŽเดจเดฟเด•เตเด•เต เดธเดฎเดฏเดฎเดฟเดฒเตเดฒ, เดˆ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด…เดคเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดฃเตเดŸเต, เด…เดคเต เดคเดฒเด•เดฑเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต.

เดชเต€เดฑเตเดฑเตผ: เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต เด’เดฐเต เดธเดฎเดฏเดชเดฐเดฟเดงเดฟ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เดŸเตเดŸเต†, เดžเด™เตเด™เตพ เด…เดคเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดคเตเดคเดคเต†เดจเตเดจเต เดŽเดจเตเดจเต‹เดŸเต เดชเดฑเดฏเตเด•.

เดตเดพเดธเดฟเดฒเดฟ: เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เดšเดฟเดคเตเดฐเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เด…เดคเต เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฃเต, เดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต†เดฒเตเดฒเดพเด‚ เด‰เดฃเตเดŸเต.
เดชเต€เดฑเตเดฑเตผ: เด‰เดฌเตเดฃเตเดŸเต เดšเดฟเดคเตเดฐเดฎเต†เดŸเตเด•เตเด•เต‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต†เดฒเตเดฒเดพเด‚ เด…เดคเดฟเดฒเตเดฃเตเดŸเต. เดชเดฟเดจเตเดจเต† เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดชเดฒเดคเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เด‰เดชเด•เดพเดฐเดชเตเดชเต†เดŸเตเด‚. เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดŸเดพเด—เต เด‡เดŸเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต, เด…เดคเตเดตเดดเดฟ เดชเดคเดฟเดชเตเดชเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเตฝ เด†เดฆเตเดฏ เดตเดฐเดฟ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจเต:

FROM ubuntu:latest

เดชเต€เดฑเตเดฑเตผ: เด…เดŸเตเดคเตเดคเดคเต เดŽเดจเตเดคเดพเดฃเต, เดžเด™เตเด™เดณเตเดŸเต† เดฎเตŠเดกเตเดฏเต‚เตพ เดŽเดดเตเดคเดพเตป เดžเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเต?
เดตเดพเดธเดฟเดฒเดฟ: เด…เดคเดฟเดจเดพเตฝ เดฑเต‚เดฌเดฟ, เด’เดฐเต เดตเต†เดฌเต เดธเต†เตผเดตเตผ เด‰เดฃเตเดŸเต, เด•เตเดฑเดšเตเดšเต เดธเต‡เดตเดจ เดกเต†เดฎเดฃเตเด•เตพ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดฃเด‚.
เดชเต€เดฑเตเดฑเตผ: เด…เดคเต†, เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต: เดฑเต‚เดฌเดฟ, เดฌเดฃเตเดŸเตโ€Œเดฒเตผ, เดจเต‹เดกเตโ€Œเดœเตเด•เตพ, เด‡เดฎเต‡เดœเตเดฎเดพเดœเดฟเด•เตเด•เต เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดฎเดฑเตเดฑเต†เดจเตเดคเดพเดฃเต... เด…เดคเต‡ เดธเดฎเดฏเด‚, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดชเตเดคเดฟเดฏ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เด…เดชเตโ€Œเด—เตเดฐเต‡เดกเต เดšเต†เดฏเตเดฏเตเด•.
เดตเดพเดธเดฟเดฒเดฟ: เดžเด™เตเด™เตพ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดฟเดฒเตเดฒ, เด…เด™เตเด™เดจเต† เดžเด™เตเด™เตพ เดฑเต‚เดŸเตเดŸเดฟเดจเต เด•เต€เดดเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒเต‡?
เดชเต€เดฑเตเดฑเตผ: เด…เดคเดฟเดจเต† เดšเดคเดฟเด•เตเด•เตเด•, เด…เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดตเด•เดพเดถเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดกเตเดขเดฟเด•เดณเดพเด•เดฃเด‚.
เดตเดพเดธเดฟเดฒเดฟ: เดŽเดจเดฟเด•เตเด•เต เดธเดฎเดฏเด‚ เดตเต‡เดฃเด‚, เดเด•เดฆเต‡เดถเด‚ 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/*

เด…เดชเตเดชเต‹เตพ เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต, DevOps (เดŽเดจเตเดจเดพเตฝ เดฆเต‡เดตเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เด“เดชเตโ€Œเดธเต), เด…เดฒเดฑเดฟเดตเดฟเดณเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เด“เดซเต€เดธเดฟเดฒเต‡เด•เตเด•เต เดชเตŠเดŸเตเดŸเดฟเดคเตเดคเต†เดฑเดฟเด•เตเด•เตเดจเตเดจเต:

AI: เดชเต†เดคเตเดฏ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดตเต€เดฃเตเดŸเตเด‚ เดญเด•เตเดทเดฃ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดคเด•เตผเดคเตเดคเต, เด‡เดคเต เดŽเดชเตเดชเต‹เตพ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเด‚...

เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดเดฑเตเดฑเตเดฎเตเดŸเตเดŸเดฒเดฟเดจเตเดถเต‡เดทเด‚, เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต เดคเดฃเตเด•เตเด•เตเด•เดฏเตเด‚ เดคเดจเตเดฑเต† เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตผ เด‡เดตเดฟเดŸเต† เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดคเตเดŸเด™เตเด™เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

AI: เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต?
เดตเดพเดธเดฟเดฒเดฟ: เด’เดฐเต เดชเตเดคเดฟเดฏ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดชเต€เดฑเตเดฑเตผ เดŽเดจเตเดจเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต.
AI: เดžเดพเดจเตŠเดจเตเดจเต เดจเต‹เด•เตเด•เดŸเตเดŸเต†... เดจเดฟเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เดŽเดจเตเดคเดพเดฃเต เดŽเดดเตเดคเดฟเดฏเดคเต, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต, เด‡เดคเตŠเดฐเต เด…เดงเดฟเด• เดชเดพเดณเดฟเดฏเดพเดฃเต... เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดœเต†เด‚เดซเดฏเตฝ เดชเด•เตผเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดŽเด™เตเด™เดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด‚! เดชเตŠเดคเตเดตเต‡, เด‡เดคเต เดจเดฒเตเดฒเดคเดฒเตเดฒ.
เดชเต€เดฑเตเดฑเตผ: เดฆเดฏเดตเดพเดฏเดฟ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเดฟเดธเดฟเดจเดธเตเดธเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเดฑเดฏเต‚, เดžเด™เตเด™เตพ เด…เดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด‚.

เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต เดธเด™เตเด•เดŸเดคเตเดคเต‹เดŸเต† เดจเต†เดŸเตเดตเต€เตผเดชเตเดชเดฟเดŸเตเดŸเต, เด†เดฐเดพเดฃเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดคเด•เตผเดคเตเดคเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจเต.

เดชเต€เดฑเตเดฑเตผ: เด…เดคเต†, เดชเด•เตเดทเต‡ เด•เต‹เดกเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดฆเตเดฆเต‡เดนเด‚ เดชเดฑเดžเตเดžเดคเต เดถเดฐเดฟเดฏเดพเดฃเต, เดžเด™เตเด™เตพ เด…เดคเต เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฎเตเด•เตเด•เต เด‰เดŸเตป เดคเดจเตเดจเต† ssh เด‰เด‚ เดธเต‚เดชเตเดชเตผเดตเตˆเดธเดฑเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดžเด™เตเด™เตพ เดกเต†เดฎเดฃเตเด•เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚.

Vasily: เด…เดชเตเดชเต‹เตพ เดžเดพเตป เด†เดฆเตเดฏเด‚ 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 เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดจเดฎเตเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เดตเดฐเดฏเตเด•เตเด•เดพเด‚. เดถเดฐเดฟ, เดจเดฟเด™เตเด™เตพ nohup เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต 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โ€]

เดชเดฟ: เด•เตŠเดณเตเดณเดพเด‚, เดŽเดจเดฟเด•เตเด•เดฟเดคเต เด‡เดทเตเดŸเดฎเดพเดฃเต. เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เตพ เดฑเดทเตเดฏเตป เดญเดพเดทเดฏเดฟเดฒเดพเดฃเต, เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเดฎเดพเดฃเต, เดŽเดฒเตเดฒเดพเดตเดฐเตเด‚ เด…เด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เดŽเดฒเตเดฒเดพเด‚ เดชเด เดฟเดชเตเดชเดฟเดšเตเดšเต, เดฌเดพเด•เตเด•เดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเด‚. เดจเดฎเตเด•เตเด•เต เด•เดพเดชเตเดชเดฟ เด•เตเดŸเดฟเด•เตเด•เดพเตป เดชเต‹เด•เดพเด‚...

เดถเดฐเดฟ, เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต เดคเดฟเด•เดšเตเดšเตเด‚ เดญเดฏเด™เตเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เด‰เดฃเตเดŸเต, เด…เดคเต เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเดฟเดจเต† เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดจเตเดฑเต† เด•เดฃเตเดฃเตเด•เตพ เด’เดฐเดพเดดเตเดšเดคเตเดคเต‡เด•เตเด•เต เดตเต‡เดฆเดจเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚. Dockerfile, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‡เดคเดฟเดฒเตเด‚ เดฎเต‹เดถเดฎเดพเดฏเต‡เด•เตเด•เดพเด‚, เดชเต‚เตผเดฃเดคเดฏเตเด•เตเด•เต เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเดจเดพเดฏเดฟ, เด‡เดคเต เดšเต†เดฏเตเดฏเตเด‚.

เด—เตเดฐเดฟเด—เดฑเดฟ เด“เดธเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเตเดงเดฐเดฃเดฟเดฏเต‹เดŸเต† เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต:

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดตเดฐเต† เด‰เดฑเดชเตเดชเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ
เดžเด™เตเด™เตพ เดœเต€เดตเดฟเดค เดชเดพเดค เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต,
เดชเดฟเดจเตเดจเต† เดŽเดจเตเดคเดฟเดจเดพเดฃเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ
เดจเดฟเด™เตเด™เดณเตเดŸเต† เดคเตŠเดดเดฟเตฝ เดฏเดพเดคเตเดฐ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•,
เด‡เดŸเดจเดพเดดเดฟเด•เดณเดฟเดฒเต† เดฌเตพเดฌเตเด•เตพ เดคเด•เตผเด•เตเด•เตเด• -
เด†เดณเตเด•เตพ เดจเดฟเด™เตเด™เดณเต‹เดŸเต "เดจเดจเตเดฆเดฟ" เดชเดฑเดฏเตเด‚.
เดจเดฟเด™เตเด™เตพ เดœเดจเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚
เดตเตˆเดฆเตเดฏเตเดคเดฟ เดฒเดพเดญเดฟเด•เตเด•เตเด•.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•