เจกเฉŒเจ•เจฐ: เจฌเฉเจฐเฉ€ เจธเจฒเจพเจน

เจกเฉŒเจ•เจฐ: เจฌเฉเจฐเฉ€ เจธเจฒเจพเจน

เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ•เจพเจฐ เจšเจฒเจพเจ‰เจฃเจพ เจธเจฟเฉฑเจ– เจฐเจฟเจนเจพ เจธเฉ€, เจคเจพเจ‚ เจชเจนเจฟเจฒเฉ‡ เจชเจพเจ  'เจคเฉ‡ เจนเฉ€ เจ‡เฉฐเจธเจŸเฉเจฐเจ•เจŸเจฐ เจจเฉ‡ เจ‰เจฒเจŸเจพ เจšเฉŒเจฐเจพเจนเฉ‡ 'เจคเฉ‡ เจ—เฉฑเจกเฉ€ เจšเจฒเจพ เจฆเจฟเฉฑเจคเฉ€, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ•เจฟเจนเจพ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ - เจ•เจฆเฉ‡ เจตเฉ€ เจจเจนเฉ€เจ‚เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจจเจฟเจฏเจฎ เจคเฉเจฐเฉฐเจค เจ…เจคเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจฌเจพเจ•เฉ€ เจฆเฉ‡ เจœเฉ€เจตเจจ เจฒเจˆ เจฏเจพเจฆ เจนเฉˆ.

เจคเฉเจธเฉ€เจ‚ เจฌเฉฑเจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ—เฉเจฐเฉ€เจ—เฉ‹เจฐเฉ€ เจ“เจธเจŸเจฐ เจฆเฉเจ†เจฐเจพ "เจฌเฉเจฐเฉ€ เจธเจฒเจพเจน" เจชเฉœเฉเจนเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจน เจ•เจฟเฉฐเจจเฉ€ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจ…เจคเฉ‡ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจคเจพ เจฒเฉฑเจ— เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพเฅค

เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‡เจ– เจฒเจฟเจ–เฉ‡ เจ—เจ เจนเจจ. เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจ—เจฒเจค เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเฉ‡. เจฎเฉˆเจ‚ เจ‡เจธ เจ˜เจพเจŸ เจจเฉ‚เฉฐ เจญเจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค เจ…เจคเฉ‡ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจœเฉ‹ เจฎเฉˆเจจเฉ‚เฉฐ เจธเจฎเจฐเจฅเจจ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ˜เฉฑเจŸ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒเจพเจ‚ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚.

เจธเจพเจฐเฉ‡ เจชเจพเจคเจฐ, เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจซเจฐเจœเจผเฉ€ เจนเจจเฅค เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเจ›เจพเจฃเจฆเฉ‡ เจนเฉ‹, เจฎเจพเจซ เจ•เจฐเจจเจพ.

เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจฃเจพ, เจ…เจธเจผเฉเจญ เจ…เจคเฉ‡ เจญเจฟเจ†เจจเจ•

เจชเฉ€เจŸเจฐ (เจธเฉ€เจจเฉ€เจ…เจฐ 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: เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจเจพเจค เจฎเจพเจฐเจจ เจฆเจฟเจ“... เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจ•เฉ€ เจฒเจฟเจ–เจฟเจ†, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจ‡เจน เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจชเจฐเจค เจนเฉˆ... เจชเจฐ เจคเฉเจธเฉ€เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ 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 เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเจพ เจธเจ•เฉˆเจš เจ•เจฐเฉ€เจ เจœเฉ‹ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเฉ‡เจ—เฉ€เฅค เจ เฉ€เจ• เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจคเฉเจธเฉ€เจ‚ nohup เจจเจพเจฒ ssh เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹, เจคเจพเจ‚ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเจพเจฒ เจœเฉเฉœ เจธเจ•เฉ€เจ เจ…เจคเฉ‡ เจฆเฉ‡เจ– เจธเจ•เฉ€เจ เจ•เจฟ เจ•เฉ€ เจ—เจฒเจค เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจซเจฟเจฐ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจธเฉเจชเจฐเจตเจพเจˆเจœเจผเจฐ เจšเจฒเจพเจ“เฅค เจ–เฉˆเจฐ, เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚ เจฌเฉฑเจธ เจฏเจพเจคเจฐเฉ€ เจšเจฒเจพเจ“.
เจชเฉเจฐ: เจชเจฐ เจฎเฉˆเจ‚ เจชเฉœเฉเจนเจฟเจ† เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจชเจคเจพ เจฒเฉฑเจ—เฉ‡เจ—เจพ เจ•เจฟ เจ•เฉเจ เจ—เจฒเจค เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค
P: เจฌเจ•เจตเจพเจธ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจธเจฟเจฐ เจจเฉ‚เฉฐ เจชเจฐเฉ‡เจธเจผเจพเจจ เจจเจพ เจ•เจฐเฉ‹. เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ•เจฟเจตเฉ‡เจ‚? เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจธเจญ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจ•เจฟเจตเฉ‡เจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹? เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐเจคเจพ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฃ เจฆเจฟเจ“, เจ‡เจน เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจฒเจˆ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ‰เจธเจจเฉ‚เฉฐ เจคเจจเจ–เจพเจน เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ. เจธเจพเจกเจพ เจ•เฉฐเจฎ เจ•เฉ‹เจก เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‰เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆ เจ•เจนเจฟเจฃ เจฆเจฟเจ“ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‰เจธเจฆเฉ‡ เจฒเจˆ เจกเฉŒเจ•เจซเจพเจˆเจฒ เจฒเจฟเจ–เฉ€ เจนเฉˆเฅค

10 เจฎเจฟเฉฐเจŸ เจ…เจคเฉ‡ เจฌเจฟเฉฑเจฒเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจฆเฉ‹ เจตเฉ€เจกเฉ€เจ“ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจšเฅค

เจธเจตเจพเจฒ: เจฎเฉˆเจ‚ เจธเจญ เจ•เฉเจ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจนเฉ‹เจฐ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚เฅค
P: เจฎเฉˆเจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ“!

เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเจพ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ:

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹