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

เจฎเฉ‡เจฐเฉ‡ เจฒเฉ‡เจ– เจฆเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ: เจฌเฉเจฐเฉ€ เจธเจฒเจพเจน เจ‡เจน เจฆเฉฑเจธเจฃ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเจจ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจตเจฐเจฃเจฟเจค เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจ‡เฉฐเจจเฉ€ เจญเจฟเจ†เจจเจ• เจ•เจฟเจ‰เจ‚ เจธเฉ€เฅค

เจชเจฟเจ›เจฒเฉ‡ เจเจชเฉ€เจธเฉ‹เจก เจฆเจพ เจธเฉฐเจ–เฉ‡เจช: เจฆเฉ‹ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เฉฑเจ• เจคเฉฐเจ— เจธเจฎเจพเจ‚ เจธเฉ€เจฎเจพ เจฆเฉ‡ เจคเจนเจฟเจค เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš, เจ“เจชเจธ เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš เจ‰เจจเฉเจนเจพเจ‚ เจ•เฉ‹เจฒ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ. เจจเจคเฉ€เจœเจพ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจ‡เฉฐเจจเจพ เจ–เจฐเจพเจฌ เจนเฉˆ เจ•เจฟ เจเจ†เจˆ เจฆเจฟเจฒ เจฆเฉ‡ เจฆเฉŒเจฐเฉ‡ เจฆเฉ€ เจ•เจ—เจพเจฐ 'เจคเฉ‡ เจนเฉˆเฅค

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

เจนเฉเจฃ เจ†เจ“ เจ‡เจน เจชเจคเจพ เจ•เจฐเฉ€เจ เจ•เจฟ เจ‡เจธ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ•เฉ€ เจ—เจฒเจค เจนเฉˆ.

เจ‡เจธ เจฒเจˆ, เจ‡เฉฑเจ• เจนเจซเจผเจคเจพ เจฌเฉ€เจค เจ—เจฟเจ† เจนเฉˆ.

เจฆเฉ‡เจต เจชเฉ‡เจŸเฉ€เจ† เจ‡เฉฑเจ• เจ•เฉฑเจช เจ•เฉŒเจซเฉ€ เจ‰เฉฑเจคเฉ‡ เจกเจพเจ‡เจจเจฟเฉฐเจ— เจฐเฉ‚เจฎ เจตเจฟเฉฑเจš เจ“เจชเจธ เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš เจจเฉ‚เฉฐ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค

เจชเฉ€: เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš, เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจฌเจนเฉเจค เจตเจฟเจ…เจธเจค เจนเฉ‹? เจฎเฉˆเจ‚ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ•เจฟเฉฑเจฅเฉ‡ เจ—เฉœเจฌเฉœ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค

AI: เจ‡เจน เจšเฉฐเจ—เจพ เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ…เจ•เจธเจฐ เจ‰เจนเจจเจพเจ‚ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฆเฉ‡ เจœเฉ‹ เจธเจผเฉ‹เจธเจผเจฃ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจเฅค
เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ•เฉเจ เจ—เฉฑเจฒเจพเจ‚ 'เจคเฉ‡ เจธเจนเจฟเจฎเจค เจนเฉ‹เจˆเจ:

  1. เจกเฉŒเจ•เจฐ เจตเจฟเจšเจพเจฐเจงเจพเจฐเจพ: เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ - เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เฅค
  2. เจœเจฟเฉฐเจจเจพ เจ›เฉ‹เจŸเจพ เจ•เฉฐเจŸเฉ‡เจจเจฐ, เจฌเจฟเจนเจคเจฐ.
  3. เจœเจฟเฉฐเจจเจพ เจœเจผเจฟเจ†เจฆเจพ เจคเฉเจธเฉ€เจ‚ เจ•เฉˆเจธเจผ เจคเฉ‹เจ‚ เจฒเจ“, เจ‰เฉฑเจจเจพ เจนเฉ€ เจตเจงเฉ€เจ†เฅค

P: เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฟเจ‰เจ‚ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ?

AI: เจกเฉŒเจ•เจฐ, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, pid 1 เจจเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ•เจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจนเจจ, เจœเจพเจ‚ เจฎเฉเฉฑเจ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ pid 1 เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจšเฉฑเจฒ เจฐเจนเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจชเจคเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ เจธเจตเจพเจฒ เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเจฟเจ–เจพเจ“เฅค

เจ…เจคเฉ‡ เจชเฉ‡เจŸเฉ€เจ† เจจเฉ‡ เจฆเจฟเจ–เจพเจ‡เจ†:

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/* 
RUN rake assets:precompile
# ะ—ะฐะฟัƒัะบะฐะตะผ ัะบั€ะธะฟั‚, ะฟั€ะธ ัั‚ะฐั€ั‚ะต ะบะพะฝั‚ะตะนะฝะตั€ะฐ, ะบะพั‚ะพั€ั‹ะน ะทะฐะฟัƒัั‚ะธั‚ ะฒัะต ะพัั‚ะฐะปัŒะฝะพะต.
CMD ["/app/init.sh"]

AI: เจ“เจน, เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ•เจฐเฉ€เจ. เจ†เจ“ เจชเจนเจฟเจฒเฉ€ เจฒเจพเจˆเจจ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ:

FROM ubuntu:latest

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

เจคเฉเจธเฉ€เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ OS เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเฉ‹, เจœเฉ‹ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ. เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ, เจนเฉ‹เจฐ เจ›เฉ‡เจ• เจ…เจคเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚.

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจšเจฟเฉฑเจคเจฐ เจœเจฟเฉฐเจจเจพ เจตเฉฑเจกเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจนเฉ‹เจธเจŸ เจ…เจคเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เจน เจ“เจจเฉ€ เจนเฉ€ เจœเจผเจฟเจ†เจฆเจพ เจฅเจพเจ‚ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ (เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹)?

P: เจนเจพเจ‚, เจฌเฉ‡เจธเจผเจ•, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเฉ‹.

AI: เจคเจพเจ‚, เจฎเฉˆเจ‚ เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚?... เจ“เจน เจนเจพเจ‚, เจตเจพเจฒเฉ€เจ…เจฎ... เจจเฉˆเฉฑเจŸเจตเจฐเจ• 'เจคเฉ‡ เจฒเฉ‹เจก เจตเฉ€ เจตเจง เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจšเจฟเฉฑเจคเจฐ เจฒเจˆ เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเฉฐเจคเจฐ เจจเจฟเจฐเจฎเจพเจฃ, เจŸเฉˆเจธเจŸ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ AWS 'เจคเฉ‡ เจฐเฉฑเจฌ เจฆเจพ เจฎเฉ‹เจก เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเฉเจฐเจนเจฟเจฎเฉฐเจกเฉ€ เจฌเจฟเฉฑเจฒ เจตเฉ€ เจฎเจฟเจฒเฉ‡เจ—เจพเฅค

เจ‡เจธ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจนเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจ…เจคเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ‡ เจจเจพเจฒ, เจธเจญ เจคเฉ‹เจ‚ เจขเฉเจ•เจตเฉ€เจ‚ เจคเจธเจตเฉ€เจฐ เจšเฉเจฃเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฒเจ“: FROM ruby:2.5.5-stretch

เจชเฉ€: เจ“เจน, เจฎเฉˆเจ‚ เจตเฉ‡เจ–เจฆเจพ เจนเจพเจ‚. เจฎเฉˆเจ‚ เจ‰เจชเจฒเจฌเจง เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจ…เจคเฉ‡ เจ•เจฟเฉฑเจฅเฉ‡ เจฆเฉ‡เจ– เจธเจ•เจฆเจพ เจนเจพเจ‚? เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจชเจคเจพ เจฒเฉฑเจ—เฉ‡เจ—เจพ เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจธ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ?

AI: เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจ‡เจธ เจคเฉ‹เจ‚ เจฒเจˆเจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ dockerhub, pornhub เจจเจพเจฒ เจ‰เจฒเจเจฃ เจจเจพ เจ•เจฐเฉ‹ :). เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฒเจˆ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจˆ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€เจ†เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ:
Alpine: เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจฟเจŠเจจเจคเจฎ เจฒเฉ€เจจเจ•เจธ เจšเจฟเฉฑเจคเจฐ 'เจคเฉ‡ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจธเจฟเจฐเจซ 5 MBเฅค เจ‡เจธเจฆเจพ เจจเฉเจ•เจธเจพเจจ: เจ‡เจน เจ‡เจธเจฆเฉ‡ เจ†เจชเจฃเฉ‡ libc เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจจเจพเจฒ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจธเจŸเฉˆเจ‚เจกเจฐเจก เจชเฉˆเจ•เฉ‡เจœ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเฉˆเจ•เฉ‡เจœ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจ…เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เฉ‡เจ—เจพเฅค
เจธเจ•เฉเจฐเฉˆเจš: เจ…เจงเจพเจฐ เจšเจฟเฉฑเจคเจฐ, เจนเฉ‹เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพเฅค เจ‡เจน เจธเจฟเจฐเจซเจผ เจฌเจพเจˆเจจเจฐเฉ€, เจคเจฟเจ†เจฐ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจนเฉˆเฅค เจฌเจพเจˆเจจเจฐเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ†เจฆเจฐเจธเจผ เจœเจฟเจธ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ GO เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเฅค
เจ•เจฟเจธเฉ‡ เจตเฉ€ OS 'เจคเฉ‡ เจ†เจงเจพเจฐเจฟเจค, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจฌเฉฐเจŸเฉ‚ เจœเจพเจ‚ เจกเฉ‡เจฌเฉ€เจ…เจจเฅค เจ–เฉˆเจฐ, เจฎเฉˆเจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจฒเจ—เจฆเจพ เจ•เจฟ เจตเจฟเจ†เจ–เจฟเจ† เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

AI: เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจตเจพเจงเฉ‚ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจชเฉˆเจ•เฉ‡เจœ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ•เฉˆเจš เจธเจพเจซเจผ เจ•เจฐเฉ‹. เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจธเฉเฉฑเจŸ เจธเจ•เจฆเฉ‡ เจนเฉ‹ apt-get เจ…เฉฑเจชเจ—เจฐเฉ‡เจก. เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจนเจฐเฉ‡เจ• เจฌเจฟเจฒเจก เจฆเฉ‡ เจจเจพเจฒ, เจฌเฉ‡เจธ เจ‡เจฎเฉ‡เจœ เจฆเฉ‡ เจซเจฟเจ•เจธเจก เจŸเฉˆเจ— เจฆเฉ‡ เจฌเจพเจตเจœเฉ‚เจฆ, เจตเฉฑเจ–-เจตเฉฑเจ– เจšเจฟเฉฑเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจฎเฉ‡เจจเจŸเฉ‡เจจเจฐ เจฆเจพ เจ•เฉฐเจฎ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจŸเฉˆเจ— เจฌเจฆเจฒเจฃเจพ เจนเฉˆเฅค

P: เจนเจพเจ‚, เจฎเฉˆเจ‚ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€, เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจจเจฟเจ•เจฒเจฟเจ†:

WORKDIR /app
COPY ./ /app

RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - 
    && apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor nodejs 
    && gem install bundler 
    && bundle install --without development test --path vendor/bundle

RUN rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

AI: เจฌเฉเจฐเจพ เจจเจนเฉ€เจ‚, เจชเจฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจ เจตเฉ€ เจนเฉˆ. เจฆเฉ‡เจ–เฉ‹, เจ‡เจน เจนเฉเจ•เจฎ เจ‡เจน เจนเฉˆ:

RUN rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*  

... เจ…เฉฐเจคเจฟเจฎ เจšเจฟเฉฑเจคเจฐ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจฎเจฟเจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจธ เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เฉ‡เจตเจฒ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจชเจฐเจค เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจธเจนเฉ€:

RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - 
    && apt-get -y install libpq-dev imagemagick gsfonts nodejs 
    && gem install bundler 
    && bundle install --without development test --path vendor/bundle   
    && rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

เจชเจฐ เจ‡เจน เจธเจญ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‰เฉฑเจฅเฉ‡ เจ•เฉ€ เจนเฉˆ, เจฐเฉ‚เจฌเฉ€? เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน Gemfile เจ…เจคเฉ‡ Gemfile.lock เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉˆ.

เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจฌเฉฐเจกเจฒ เจธเจฅเจพเจชเจจเจพ เจนเจฐ เจธเจฐเฉ‹เจค เจคเจฌเจฆเฉ€เจฒเฉ€ เจฒเจˆ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€, เจชเจฐ เจธเจฟเจฐเจซ เจคเจพเจ‚ เจนเฉ€ เจœเฉ‡ Gemfile เจœเจพเจ‚ Gemfile.lock เจฌเจฆเจฒ เจ—เจฟเจ† เจนเฉˆเฅค

เจจเจฟเจฐเจญเจฐเจคเจพ เจชเฉเจฐเจฌเฉฐเจงเจ•, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ npm, pip, เจ•เฉฐเจชเฉ‹เจœเจผเจฐ เจ…เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจนเฉ‹เจฐ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจฒเจˆ เจ‰เจนเฉ€ เจขเฉฐเจ— เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

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

เจชเจฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ.

P: เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจธเจฎเจ เจ—เจฟเจ† เจนเจพเจ‚. เจฆเฉ‡เจ–เฉ‹ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ:

FROM ruby:2.5.5-stretch

WORKDIR /app
COPY Gemfile* /app

RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - 
    && apt-get -y install libpq-dev imagemagick gsfonts nodejs 
    && gem install bundler 
    && bundle install --without development test --path vendor/bundle   
    && rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

COPY . /app
RUN rake assets:precompile

CMD ["bundleโ€, โ€œexecโ€, โ€œpassengerโ€, โ€œstart"]

เจ•เฉ€ เจ…เจธเฉ€เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจกเฉˆเจฎเจจ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจก เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚?

AI: เจนเจพเจ‚, เจ‡เจน เจธเจนเฉ€ เจนเฉˆเฅค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ CMD เจ…เจคเฉ‡ ENTRYPOINT เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เจคเฉ‡ เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจ•เจฟ เจ•เฉ€ เจซเจฐเจ• เจนเฉˆ เจคเฉเจนเจพเจกเจพ เจนเฉ‹เจฎเจตเจฐเจ•เฅค Habrรฉ 'เจคเฉ‡ เจ‡เจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจนเฉˆ เจฒเฉ‡เจ–.

เจ‡เจธ เจฒเจˆ, เจ†เจ“ เจ…เฉฑเจ—เฉ‡ เจตเจงเฉ€เจเฅค เจคเฉเจธเฉ€เจ‚ เจจเฉ‹เจก เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจ•เฉ‹เจˆ เจ—เจพเจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจ‰เจน เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจธเจพเจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x 
    && echo "958c9a95c4974c918dca773edf6d18b1d1a41434  setup_9.x" | sha1sum -c - 
    &&  bash  setup_9.x 
    && rm -rf setup_9.x 
    && apt-get -y install libpq-dev imagemagick gsfonts nodejs 
    && gem install bundler 
    && bundle install --without development test --path vendor/bundle   
    && rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

เจšเฉˆเฉฑเจ•เจธเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจคเฉเจธเฉ€เจ‚ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจธเจนเฉ€ เจซเจพเจˆเจฒ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค

P: เจชเจฐ เจœเฉ‡เจ•เจฐ เจซเจพเจˆเจฒ เจฌเจฆเจฒเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฌเจฟเจฒเจก เจซเฉ‡เจฒ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค

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

เจชเฉ€: เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆเฅค เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ เจ•เจฟ เจ…เฉฐเจคเจฎ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€:

FROM ruby:2.5.5-stretch

WORKDIR /app
COPY Gemfile* /app

RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x 
    && echo "958c9a95c4974c918dca773edf6d18b1d1a41434  setup_9.x" | sha1sum -c - 
    &&  bash  setup_9.x 
    && rm -rf setup_9.x 
    && apt-get -y install libpq-dev imagemagick gsfonts nodejs 
    && gem install bundler 
    && bundle install --without development test --path vendor/bundle   
    && rm -rf /usr/local/bundle/cache/*.gem 
    && apt-get clean  
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

COPY . /app
RUN rake assets:precompile

CMD ["bundleโ€, โ€œexecโ€, โ€œpassengerโ€, โ€œstart"]

เจชเฉ€: เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš, เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆเฅค เจ‡เจน เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจฆเฉŒเฉœเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เฉฑเจœ 10 เจนเฉ‹เจฐ เจ•เจฎเจฟเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš, เจ†เจชเจฃเฉ‡ เจ•เจพเจนเจฒเฉ‡ เจธเจพเจฅเฉ€ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจจเจœเจผเจฐ เจจเจพเจฒ เจฐเฉ‹เจ•เจฆเจพ เจนเฉ‹เจ‡เจ†, เจฎเจœเจผเจฌเฉ‚เจค โ€‹โ€‹เจ•เฉŒเจซเฉ€ เจฆเฉ€ เจšเฉเจธเจ•เฉ€ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค 99.9% SLA เจ…เจคเฉ‡ เจฌเฉฑเจ—-เจฎเฉเจ•เจค เจ•เฉ‹เจก เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจธเจ•เจฟเฉฐเจŸเจพเจ‚ เจฒเจˆ เจธเฉ‹เจšเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‰เจน เจ‡เฉฑเจ• เจธเจตเจพเจฒ เจชเฉเฉฑเจ›เจฆเจพ เจนเฉˆเฅค

AI: เจคเฉเจธเฉ€เจ‚ เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจ•เจฟเฉฑเจฅเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?

P: เจฌเฉ‡เจธเจผเฉฑเจ•, production.log เจตเจฟเฉฑเจš. เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจนเจพเจ‚, เจชเจฐ เจ…เจธเฉ€เจ‚ ssh เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจคเฉฑเจ• เจ•เจฟเจตเฉ‡เจ‚ เจชเจนเฉเฉฐเจš เจธเจ•เจฆเฉ‡ เจนเจพเจ‚?

AI: เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ›เฉฑเจก เจฆเจฟเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉฑเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ–เฉ‹เจœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ. docker exec เจ•เจฎเจพเจ‚เจก เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจตเฉ€ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจฒเฉŒเจ— เจฒเจˆ เจฌเจฟเฉฑเจฒเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹. เจ…เจคเฉ‡ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ -เจ‡เจน เจ…เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ€ bash (เจœเฉ‡เจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจพเจฒ เจนเฉˆ) เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจคเฉฑเจ• เจ‡เฉฐเจŸเจฐเจเจ•เจŸเจฟเจต เจชเจนเฉเฉฐเจš เจฆเฉ‡เจตเฉ‡เจ—เฉ€เฅค

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

เจชเฉ€: เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš, เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจฒเฉŒเจ—เจธ เจจเฉ‚เฉฐ เจฎเจพเจŠเจ‚เจŸ เจ•เฉ€เจคเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจญเฉŒเจคเจฟเจ• เจจเฉ‹เจก เจคเฉ‡, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเจพ เจธเจ•เจฆเจพ เจนเจพเจ‚?

AI: เจ‡เจน เจšเฉฐเจ—เจพ เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจจเฉ‹เจก เจฆเฉ€ เจกเจฟเจธเจ• 'เจคเฉ‡ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจญเฉเฉฑเจฒเจฟเจ†. เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจฒเฉŒเจ—เจธ เจจเจพเจฒ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจฌเจธ เจฐเฉ‹เจŸเฉ‡เจธเจผเจจ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹เฅค
เจ‡เจน เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹.

เจชเฉ€: เจ‡เจ—เฉ‹เจฐ เจ‡เจตเจพเจจเฉ‹เจตเจฟเจš, เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจฎเฉˆเจจเฉ‚เฉฐ เจธเจฒเจพเจน เจฆเฉ‡ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉ€ เจชเฉœเฉเจนเจจเจพ เจนเฉˆ?

AI: เจชเจนเจฟเจฒเจพเจ‚, เจชเฉœเฉเจนเฉ‹ เจกเฉŒเจ•เจฐ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผเจพเจ‚, เจธเจผเจพเจ‡เจฆ เจนเฉ€ เจ•เฉ‹เจˆ เจกเฉŒเจ•เจฐ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒเฉ‹เจ‚ เจฌเจฟเจนเจคเจฐ เจœเจพเจฃเจฆเจพ เจนเฉˆ.

เจ…เจคเฉ‡ เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฐเจŸเจฐเจจเจธเจผเจฟเจช เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจœเจพเจ“ เจคเฉ€เจฌเจฐ. เจ†เจ–เจผเจฐเจ•เจพเจฐ, เจ…เจญเจฟเจ†เจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจฟเจงเจพเจ‚เจค เจฎเจฐ เจ—เจฟเจ† เจนเฉˆ.

เจธเจฐเฉ‹เจค: www.habr.com

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