เชกเซ‹เช•เชฐ: เช–เชฐเชพเชฌ เชธเชฒเชพเชน

เชกเซ‹เช•เชฐ: เช–เชฐเชพเชฌ เชธเชฒเชพเชน

เชœเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เช•เชพเชฐ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชถเซ€เช–เซ€ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹, เชคเซเชฏเชพเชฐเซ‡ เชชเชนเซ‡เชฒเชพ เชœ เชชเชพเช เชฎเชพเช‚ เชชเซเชฐเชถเชฟเช•เซเชทเช•เซ‡ เช‰เชฒเชŸเชพ เชฎเชพเชฐเซเช—เซ‡ เช†เช‚เชคเชฐเช›เซ‡เชฆเชฎเชพเช‚ เชตเชพเชนเชจ เชšเชฒเชพเชตเซเชฏเซเช‚, เช…เชจเซ‡ เชชเช›เซ€ เช•เชนเซเชฏเซเช‚ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชคเซ‡ เชจ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช - เช•เซเชฏเชพเชฐเซ‡เชฏ เชจเชนเซ€เช‚. เชฎเชจเซ‡ เช† เชจเชฟเชฏเชฎ เชคเชฐเชค เชœ เช…เชจเซ‡ เชฎเชพเชฐเชพ เชฌเชพเช•เซ€เชจเชพ เชœเซ€เชตเชจ เชฎเชพเชŸเซ‡ เชฏเชพเชฆ เช†เชตเซเชฏเซ‹.

เชคเชฎเซ‡ เชฌเชพเชณเช•เซ‹เชจเซ‡ เช—เซเชฐเชฟเช—เซ‹เชฐเซ€ เช“เชธเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ "เช–เชฐเชพเชฌ เชธเชฒเชพเชน" เชตเชพเช‚เชšเซ‹ เช›เซ‹, เช…เชจเซ‡ เชคเชฎเซ‡ เชœเซเช“ เช›เซ‹ เช•เซ‡ เช•เซ‡เชŸเชฒเซ€ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡ เชคเซ‡ เชคเซ‡เชฎเชจเชพ เชชเชฐ เช‰เช เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“เช เช† เชจ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช.

เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡ เช˜เชฃเชพ เชฌเชงเชพ เชฒเซ‡เช–เซ‹ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชชเชฐเช‚เชคเซ เช–เซ‹เชŸเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชฎเชจเซ‡ เชฎเชณเซ€ เชจเชฅเซ€. เชนเซเช‚ เช† เช–เชพเชฒเซ€เชชเซ‹ เชญเชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เช…เชจเซ‡ เช•เชฆเชพเชš เชเชตเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ เช•เซ‡ เชœเซ‡ เชฎเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชฎเชณเซ‡ เช›เซ‡, เช†เชตเซ€ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเซเชธ เช“เช›เซ€ เชนเชถเซ‡.

เชฌเชงเชพ เชชเชพเชคเซเชฐเซ‹, เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ เช…เชจเซ‡ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒ เช•เชพเชฒเซเชชเชจเชฟเช• เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช“เชณเช–เซ‹ เช›เซ‹, เชคเซ‹ เชฎเชพเชซ เช•เชฐเชถเซ‹.

เชกเซ‹เช•เชฐเชซเชพเชˆเชฒ เชฌเชจเชพเชตเชตเซ€, เช…เชชเชถเซเช•เชจเชฟเชฏเชพเชณ เช…เชจเซ‡ เชญเชฏเช‚เช•เชฐ

เชชเซ€เชŸเชฐ (เชตเชฐเชฟเชทเซเช  java/rubby/php เชกเซ‡เชตเชฒเชชเชฐ): เชธเชนเช•เชฐเซเชฎเซ€ เชตเซ‡เชธเชฟเชฒเซ€, เชถเซเช‚ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชกเซ‹เช•เชฐ เชชเชฐ เชจเชตเซเช‚ เชฎเซ‹เชกเซเชฏเซเชฒ เช…เชชเชฒเซ‹เชก เช•เชฐเซเชฏเซเช‚ เช›เซ‡?
เชตเซ‡เชธเชฟเชฒเซ€ (เชœเซเชจเชฟเชฏเชฐ): เชจเชพ, เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเชฎเชฏ เชจเชฅเซ€, เชนเซเช‚ เช† เชกเซ‹เช•เชฐ เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ‡ เชถเซ‹เชงเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€. เชคเซ‡เชจเชพ เชชเชฐ เช˜เชฃเชพ เชฌเชงเชพ เชฒเซ‡เช–เซ‹ เช›เซ‡, เชคเซ‡ เชšเช•เซเช•เชฐ เช†เชตเซ‡ เช›เซ‡.

เชชเซ€เชŸเชฐ: เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพ เชธเชฎเชฏเชฎเชฐเซเชฏเชพเชฆเชพ เชนเชคเซ€. เชšเชพเชฒเซ‹ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเซเช‚, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€เชถเซเช‚. เชฎเชจเซ‡ เช•เชนเซ‹ เช•เซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชถเซเช‚ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เชตเซ‡เชธเชฟเชฒเซ€: เชนเซเช‚ เชฎเซ‚เชณเชญเซ‚เชค เช›เชฌเซ€ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เชœเซ‡เชฅเซ€ เชคเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชนเซ‹เชฏ, เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เชคเซ‡ เชฌเชงเซเช‚ เช›เซ‡.
เชชเซ€เชŸเชฐ: เช‰เชฌเซเชจเซเชŸเซ เช‡เชฎเซ‡เชœ เชฒเซ‹, เชคเซ‡เชฎเชพเช‚ เชคเชฎเชจเซ‡ เชœเซ‹เชˆเชคเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เช›เซ‡. เช…เชจเซ‡ เชœเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชตเชธเซเชคเซเช“ เช›เซ‡ เชคเซ‡ เชชเช›เซ€เชฅเซ€ เชนเชพเชฅเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชจเซ‡ เชจเชตเซ€เชจเชคเชฎ เชŸเซ‡เช— เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ เชœเซ‡เชฅเซ€ เชธเช‚เชธเซเช•เชฐเชฃ เชนเช‚เชฎเซ‡เชถเชพ เชจเชตเซ€เชจเชคเชฎ เชฐเชนเซ‡.

เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชฒเซ€เชŸเซ€ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

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

เชชเช›เซ€ เช‡เช—เซ‹เชฐ เช‡เชตเชพเชจเซ‹เชตเชฟเชš, เชฆเซ‡เชตเช“เชชเซเชธ (เชชเชฐเช‚เชคเซ เชฆเซ‡เชต เช•เชฐเชคเชพเช‚ เชตเชงเซ เช“เชชเซเชธ), เช“เชซเชฟเชธเชฎเชพเช‚ เชฌเซ‚เชฎเซ‹ เชชเชพเชกเซ€เชจเซ‡ เชงเชธเซ€ เช†เชตเซ‡ เช›เซ‡:

AI: เชชเซ‡เชŸเซเชฏเชพ, เชคเชฎเชพเชฐเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชซเชฐเซ€เชฅเซ€ เชซเซ‚เชก เชกเซ‡เชŸเชพเชฌเซ‡เช เชคเซ‹เชกเซเชฏเซ‹, เช† เช•เซเชฏเชพเชฐเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชถเซ‡...

เชเช• เชจเชพเชจเซ€ เช…เชฅเชกเชพเชฎเชฃ เชชเช›เซ€, เช‡เช—เซ‹เชฐ เช‡เชตเชพเชจเซ‹เชตเชฟเชš เช เช‚เชกเซ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เช…เชนเซ€เช‚ เชถเซเช‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡.

AI: เชคเชฎเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹?
เชตเซ‡เชธเชฟเชฒเซ€: เชชเซ€เชŸเชฐ เชฎเชจเซ‡ เชจเชตเชพ เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡.
AI: เชšเชพเชฒเซ‹ เชนเซเช‚ เชเช• เชจเชœเชฐ เช•เชฐเซเช‚... เชคเชฎเซ‡ เช…เชนเซ€เช‚ เชถเซเช‚ เชฒเช–เซเชฏเซเช‚ เช›เซ‡, เชคเชฎเซ‡ เชเช• เช…เชฒเช— เช•เชฎเชพเชจเซเชก เชตเชกเซ‡ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชธเชพเชซ เช•เชฐเซ‹ เช›เซ‹, เช† เชเช• เชตเชงเชพเชฐเชพเชจเซเช‚ เชฒเซ‡เชฏเชฐ เช›เซ‡... เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ Gemfile เช•เซ‰เชชเชฟ เชจ เช•เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹ เชคเชฎเซ‡ เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชถเซ‹! เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เชธเชพเชฐเซเช‚ เชจเชฅเซ€.
เชชเซ€เชŸเชฐ: เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เชตเซเชฏเชตเชธเชพเชฏ เชตเชฟเชถเซ‡ เชœเชพเช“, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€เชถเซเช‚.

เช‡เช—เซ‹เชฐ เช‡เชตเชพเชจเซ‹เชตเชฟเชš เช‰เชฆเชพเชธเซ€เชฅเซ€ เชจเชฟเชธเชพเชธเซ‹ เชจเชพเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซ‹เชฃเซ‡ เชคเซ‹เชกเซเชฏเซ‹ เชคเซ‡ เชถเซ‹เชงเชตเชพ เชจเซ€เช•เชณเซ€ เชœเชพเชฏ เช›เซ‡.

เชชเซ€เชŸเชฐ: เชนเชพ, เชชเชฐเช‚เชคเซ เชคเซ‡ เช•เซ‹เชก เชตเชฟเชถเซ‡ เชธเชพเชšเซ‹ เชนเชคเซ‹, เช…เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช›เชฌเซ€เชฎเชพเช‚ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชจเซ‡ เชšเชพเชฒเซ‹ เชคเชฐเชค เชœ ssh เช…เชจเซ‡ เชธเซเชชเชฐเชตเชพเชˆเชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช, เช…เชจเซเชฏเชฅเชพ เช…เชฎเซ‡ เชกเชฟเชฎเชจ เชถเชฐเซ‚ เช•เชฐเซ€เชถเซเช‚.

เชตเซ‡เชธเชฟเชฒเซ€: เชชเช›เซ€ เชนเซเช‚ เชชเซเชฐเชฅเชฎ Gemfile เช…เชจเซ‡ Gemfile.lock เชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เชถ, เชชเช›เซ€ เชนเซเช‚ เชฌเชงเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชถ, เช…เชจเซ‡ เชชเช›เซ€ เชนเซเช‚ เช†เช–เชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เชถ. เชœเซ‹ Gemfile เชฌเชฆเชฒเชพเชคเซ€ เชจเชฅเซ€, เชคเซ‹ เชธเซเชคเชฐ เช•เซ‡เชถเชฎเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
เชชเซ€เชŸเชฐ: เชคเชฎเซ‡ เชฌเชงเชพ เช† เชธเซเชคเชฐเซ‹ เชธเชพเชฅเซ‡ เช•เซ‡เชฎ เช›เซ‹, เชเช• เชœ เชธเชฎเชฏเซ‡ เชฌเชงเซเช‚ เช•เซ‰เชชเชฟ เช•เชฐเซ‹. เชคเชฐเชค เชœ เชจเช•เชฒ เช•เชฐเซ‹. เช–เซ‚เชฌ เชœ เชชเซเชฐเชฅเชฎ เชชเช‚เช•เซเชคเชฟ.

เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชนเชตเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

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 เชฎเชฟเชจเชฟเชŸ เช…เชจเซ‡ เชชเช›เซ€ เชฌเชฟเชฒเชพเชกเซ€เช“ เชตเชฟเชถเซ‡ เชฌเซ‡ เชตเชฟเชกเชฟเช“เช.

เชชเซเชฐ: เชฎเซ‡เช‚ เชฌเชงเซเช‚ เชœ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชฎเซ‡เช‚ เชตเชงเซ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เช‰เชฎเซ‡เชฐเซ€.
เชชเซ€: เชฎเชจเซ‡ เชฌเชคเชพเชตเซ‹!

เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชจเซเช‚ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ:

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โ€]

เชชเซ€: เชธเชฐเชธ, เชฎเชจเซ‡ เชคเซ‡ เช—เชฎเซ‡ เช›เซ‡. เช…เชจเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชฐเชถเชฟเชฏเชจ, เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เช›เซ‡, เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟ เชคเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡. เชฎเซ‡เช‚ เชคเชฎเชจเซ‡ เชฌเชงเซเช‚ เชถเซ€เช–เชตเซเชฏเซเช‚, เชฌเชพเช•เซ€เชจเซเช‚ เชคเชฎเซ‡ เชœเชพเชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹. เชšเชพเชฒเซ‹ เชฅเซ‹เชกเซ€ เช•เซ‹เชซเซ€ เชชเซ€เช...

เช เซ€เช• เช›เซ‡, เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชญเชฏเช‚เช•เชฐ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เช›เซ‡, เชœเซ‡ เชœเซ‹เชˆเชจเซ‡ เช‡เช—เซ‹เชฐ เช‡เชตเชพเชจเซ‹เชตเชฟเชš เช›เซ‹เชกเชตเชพ เชฎเชพเช‚เช—เชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช†เช‚เช–เซ‹ เชฌเซ€เชœเชพ เช…เช เชตเชพเชกเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฆเซเช–เซ‡ เช›เซ‡. เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ, เช…เชฒเชฌเชคเซเชค, เชตเชงเซ เช–เชฐเชพเชฌ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃเชคเชพเชจเซ€ เช•เซ‹เชˆ เชฎเชฐเซเชฏเชพเชฆเชพ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชถเชฐเซ‚เช†เชค เชฎเชพเชŸเซ‡, เช† เช•เชฐเชถเซ‡.

เชนเซเช‚ เช—เซเชฐเชฟเช—เซ‹เชฐเซ€ เช“เชธเซเชŸเชฐเชจเชพ เช…เชตเชคเชฐเชฃ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚:

เชœเซ‹ เชคเชฎเชจเซ‡ เชนเชœเซ เช–เชพเชคเชฐเซ€ เชจเชฅเซ€
เช…เชฎเซ‡ เชœเซ€เชตเชจเชฎเชพเช‚ เชฐเชธเซเชคเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹,
เช…เชจเซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€
เชคเชฎเชพเชฐเซ€ เชฎเชœเซ‚เชฐ เชฏเชพเชคเซเชฐเชพ เชถเชฐเซ‚ เช•เชฐเซ‹,
เชนเซ‰เชฒเชตเซ‡เชเชฎเชพเช‚ เชฒเชพเช‡เชŸ เชฌเชฒเซเชฌ เชคเซ‹เชกเซ€ เชจเชพเช–เซ‹ -
เชฒเซ‹เช•เซ‹ เชคเชฎเชจเซ‡ "เช†เชญเชพเชฐ" เช•เชนเซ‡เชถเซ‡.
เชคเชฎเซ‡ เชฒเซ‹เช•เซ‹เชจเซ‡ เชฎเชฆเชฆ เช•เชฐเชถเซ‹
เชตเซ€เชœเชณเซ€ เชฌเชšเชพเชตเซ‹.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹