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

เดŽเดจเตเดฑเต† เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดกเต‹เด•เตเด•เตผ: เดฎเต‹เดถเด‚ เด‰เดชเดฆเต‡เดถเด‚ เด…เดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด‡เดคเตเดฐ เดญเต€เด•เดฐเดฎเดพเดฏเดคเต†เดจเตเดจเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดจเดฟเดฐเดตเดงเดฟ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดฎเตเตป เดชเดฐเดฎเตเดชเดฐเดฏเตเดŸเต† เดธเด‚เด—เตเดฐเดนเด‚: เดฐเดฃเตเดŸเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด•เตผเดถเดจเดฎเดพเดฏ เดธเดฎเดฏเดชเดฐเดฟเดงเดฟเด•เตเด•เต เด•เต€เดดเดฟเตฝ เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เด“เดชเตเดธเต เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต เด…เดตเดฐเตเดŸเต† เด…เดŸเตเดคเตเดคเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต. เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดตเดณเดฐเต† เดฎเต‹เดถเดฎเดพเดฃเต, AI เดนเตƒเดฆเดฏเดพเด˜เดพเดคเดคเตเดคเดฟเดจเตเดฑเต† เดตเด•เตเด•เดฟเดฒเดพเดฃเต.

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

เด‡เดจเดฟ เดˆ เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเดจเตเดฑเต† เด•เตเดดเดชเตเดชเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เด…เด™เตเด™เดจเต† เด’เดฐเดพเดดเตเดš เด•เดดเดฟเดžเตเดžเต.

เดฆเต‡เดตเต เดชเต†เดคเตเดฏ เด“เดชเตโ€Œเดธเต เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเดฟเดจเต† เดกเตˆเดจเดฟเด‚เด—เต เดฑเต‚เดฎเดฟเตฝ เด’เดฐเต เด•เดชเตเดชเต เด•เดพเดชเตเดชเดฟ เด•เตเดŸเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฟ: เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพ เดตเดณเดฐเต† เดคเดฟเดฐเด•เตเด•เดฟเดฒเดพเดฃเต‹? เดžเด™เตเด™เตพ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดชเดฟเดฃเด™เตเด™เดฟเดฏเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

AI: เด…เดคเต เดจเดฒเตเดฒเดคเดพเดฃเต, เดšเต‚เดทเดฃเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต† เดจเดฟเด™เตเด™เตพ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด•เดพเดฃเดพเดฑเดฟเดฒเตเดฒ.
เด†เดฆเตเดฏเด‚, เดจเดฎเตเด•เตเด•เต เดšเดฟเดฒ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดพเด‚:

  1. เดกเต‹เด•เตเด•เตผ เดชเตเดฐเดคเตเดฏเดฏเดถเดพเดธเตเดคเตเดฐเด‚: เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ - เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏ.
  2. เดšเต†เดฑเดฟเดฏ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ, เดจเดฒเตเดฒเดคเต.
  3. เดจเดฟเด™เตเด™เตพ เด•เดพเดทเต†เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดคเตเดฐเดฏเดงเดฟเด•เด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเตเดตเต‹ เด…เดคเตเดฐเดฏเตเด‚ เดจเดฒเตเดฒเดคเต.

เดชเดฟ: เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚?

AI: เดกเต‹เด•เตเด•เตผ, เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเดฟเดกเต 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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด‡เดฎเต‡เดœเต เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเตเดคเตฝ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ, เด•เต‚เดŸเตเดคเตฝ เดฆเตเดตเดพเดฐเด™เตเด™เดณเตเด‚ เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเตเด‚.

เด•เต‚เดŸเดพเดคเต†, เดตเดฒเดฟเดฏ เด‡เดฎเต‡เดœเต, เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเตเด‚ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเตเด‚ เด•เต‚เดŸเตเดคเตฝ เด‡เดŸเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต (เดจเดฟเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเดตเดฟเดŸเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹)?

เดชเดฟ: เด…เดคเต†, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เด‰เดฃเตเดŸเต, เดจเดฟเด™เตเด™เตพ เด…เดคเต เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ.

AI: เด…เดชเตเดชเต‹เตพ, เดžเดพเตป เดŽเดจเตเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต?.. เด…เดคเต†, เดตเต‹เดณเตเดฏเด™เตเด™เตพ... เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต† เดฒเต‹เดกเตเด‚ เดตเดณเดฐเตเด•เดฏเดพเดฃเต. เด’เดฐเตŠเดฑเตเดฑ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต เด‡เดคเต เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดฌเดฟเตฝเดกเต, เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ, เดตเดฟเดจเตเดฏเดพเดธเด‚ เดŽเดจเตเดจเดฟเดต เด‰เดฃเตเดŸเดพเด•เตเดฎเตเดชเต‹เตพ เด…เดคเต เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต AWS-เตฝ เดฆเตˆเดตเดคเตเดคเดฟเดจเตเดฑเต† เดฎเต‹เดกเต เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เต‹เดธเตเดฎเดฟเด•เต เดฌเดฟเดฒเตเดฒเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚.

เด…เดคเดฟเดจเดพเตฝ, เด•เตƒเดคเตเดฏเดฎเดพเดฏ เดชเดคเดฟเดชเตเดชเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเดฑเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เดเดฑเตเดฑเดตเตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดšเดฟเดคเตเดฐเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŽเดŸเตเด•เตเด•เตเด•: FROM ruby:2.5.5-stretch

เดชเดฟ: เด“, เดžเดพเตป เด•เดพเดฃเตเดจเตเดจเต. เดฒเดญเตเดฏเดฎเดพเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†, เดŽเดตเดฟเดŸเต† เด•เดพเดฃเดพเดจเดพเด•เตเด‚? เดŽเดจเดฟเด•เตเด•เต เดเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด…เดฑเดฟเดฏเดพเด‚?

AI: เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดกเต‹เด•เตเด•เตผเดนเดฌเต, เดชเต‹เตบเดนเดฌเตเดฌเตเดฎเดพเดฏเดฟ เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดคเตเดคเดฟเดฒเดพเด•เตเด•เดฐเตเดคเต :). เด’เดฐเต เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เด…เดธเด‚เดฌเตเดฒเดฟเด•เตพ เด‰เดฃเตเดŸเต:
เด†เตฝเดชเตˆเตป: เดšเดฟเดคเตเดฐเด™เตเด™เตพ เด’เดฐเต เดฎเดฟเดจเดฟเดฎเดฒเดฟเดธเตเดฑเตเดฑเดฟเด•เต เดฒเดฟเดจเด•เตเดธเต เด‡เดฎเต‡เดœเดฟเตฝ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเต, 5 MB เดฎเดพเดคเตเดฐเด‚. เด…เดคเดฟเดจเตเดฑเต† เดชเต‹เดฐเดพเดฏเตเดฎ: เด‡เดคเต เดธเตเดตเดจเตเดคเด‚ libc เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดพเดนเดฐเดฟเดšเตเดšเดคเดพเดฃเต, เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด…เดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเด•เตเด•เต‡เดœเต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚.
เดธเตเด•เตเดฐเดพเดšเตเดšเต: เด…เดŸเดฟเดธเตเดฅเดพเดจ เดšเดฟเดคเตเดฐเด‚, เดฎเดฑเตเดฑเต เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด‡เดคเต เดฌเตˆเดจเดฑเดฟ, เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดกเดพเดฑเตเดฑ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟ เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณเดคเดพเดฃเต. GO เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเต‹เดฒเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต†เดฒเตเดฒเดพเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เดฌเตˆเดจเดฑเดฟ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดจเตเดฏเต‹เดœเตเดฏเด‚.
เด‰เดฌเตเดฃเตเดŸเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเต†เดฌเดฟเดฏเตป เดชเต‹เดฒเตเดณเตเดณ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ OS เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ. เดถเดฐเดฟ, เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเดพเตป เด•เดฐเตเดคเตเดจเตเดจเต.

AI: เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดŽเดฒเตเดฒเดพ เดŽเด•เตเดธเตเดŸเตเดฐเดพเด•เดณเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฃเด‚. เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดพเดทเต†เด•เตพ เดฎเดพเดฏเตเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เด‰เดŸเดจเดŸเดฟ เดตเดฒเดฟเดšเตเดšเต†เดฑเดฟเดฏเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ apt-get upgrade. เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚, เด“เดฐเต‹ เดฌเดฟเตฝเดกเดฟเดฒเตเด‚, เด…เดŸเดฟเดธเตเดฅเดพเดจ เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เดจเดฟเดถเตเดšเดฟเดค เดŸเดพเด—เต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดŸเตเดŸเตเด‚, เดตเตเดฏเดคเตเดฏเดธเตเดค เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเด‚. เด‡เดฎเต‡เดœเดฟเดฒเต† เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเต เดฎเต†เดฏเดฟเดจเตเดฑเดจเดฑเตเดŸเต† เดšเตเดฎเดคเดฒเดฏเดพเดฃเต, เด’เดชเตเดชเด‚ เดŸเดพเด—เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตŠเดชเตเดชเด‚.

เดชเดฟ: เด…เดคเต†, เดžเดพเตป เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต, เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เดฎเดพเดฑเดฟ:

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 เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฐเตเดคเต. เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ, เดกเต‹เด•เตเด•เตผ เดคเดจเตเดจเต† เด’เดฐเต เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ เด†เดฃเต. เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด’เดฐเต เดธเต‚เดชเตเดชเตผเดตเตˆเดธเตผ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†เดฏเดพเดฃเต.
เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด‚, เดคเตเดŸเตผเดจเตเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฃเตเดฃเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚, เด…เด™เตเด™เดจเต† เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดจเดพเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เด…เดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ.

เดชเดฟ: เดŽเดจเดฟเด•เตเด•เต เดฎเดจเดธเตเดธเดฟเดฒเดพเดฏเต†เดจเตเดจเต เด•เดฐเตเดคเตเดจเตเดจเต. เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเต‹เด•เตเด•เต‚:

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 เด‰เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด—เตƒเดนเดชเดพเด เดฎเดพเดฃเต. เดนเดฌเตเดฐเต†เดฏเดฟเตฝ เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดจเดฒเตเดฒเตŠเดฐเต เด•เดพเดฐเตเดฏเดฎเตเดฃเตเดŸเต เด’เดฐเต เดฒเต‡เด–เดจเด‚.

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

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

เดšเต†เด•เตเด•เตโ€Œเดธเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เดถเดฐเดฟเดฏเดพเดฏ เดซเดฏเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดคเตเดตเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚.

เดชเดฟ: เดŽเดจเตเดจเดพเตฝ เดซเดฏเตฝ เดฎเดพเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฌเดฟเตฝเดกเต เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚.

AI: เด…เดคเต†, เดตเดฟเดšเดฟเดคเตเดฐเดฎเต†เดจเตเดจเต เดชเดฑเดฏเดŸเตเดŸเต†, เด‡เดคเตเด‚ เด’เดฐเต เดชเตเดฒเดธเต เด†เดฃเต. เดซเดฏเตฝ เดฎเดพเดฑเดฟเดฏเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚, เด…เดตเดฟเดŸเต† เดŽเดจเตเดคเดพเดฃเต เดฎเดพเดฑเดฟเดฏเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดฟเดฒเตเดฒ, เด…เดตเตผ เดšเต‡เตผเดคเตเดคเต, เด…เดคเต เดŽเดคเตเดคเดฟเดšเตเดšเต‡เดฐเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดชเดฟเตปเดตเดพเดคเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต.

เดชเดฟ: เดจเดจเตเดฆเดฟ. เด…เดตเดธเดพเดจ เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต:

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: เดจเดฟเด™เตเด™เตพ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดฒเต‹เด—เตเด•เตพ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต?

เดชเดฟ: เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, production.log-เตฝ. เดตเดดเดฟเดฏเดฟเตฝ, เด…เดคเต†, เดŽเดจเตเดจเดพเตฝ ssh เด‡เดฒเตเดฒเดพเดคเต† เดจเดฎเตเด•เตเด•เต เด…เดต เดŽเด™เตเด™เดจเต† เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚?

AI: เดจเดฟเด™เตเด™เตพ เด…เดต เดซเดฏเดฒเตเด•เดณเดฟเตฝ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เด‡เดคเดฟเดจเด•เด‚ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเตฝ เดเดคเต เด•เดฎเดพเตปเดกเตเด‚ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดกเต‹เด•เตเด•เตผ เดŽเด•เตเดธเดฟเด•เต เด•เดฎเดพเตปเดกเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเต‹เด—เตเด•เตพเด•เตเด•เดพเดฏเดฟ เดชเต‚เดšเตเดš เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เด’เดชเตเดชเด‚ เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต -เด‡เดคเต เด•เต‚เดŸเดพเดคเต† เดฑเดฃเตเดฃเดฟเด‚เด—เต เดฌเดพเดทเต (เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ) เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เตเด‚.

เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดซเดฏเดฒเตเด•เดณเดฟเตฝ เดฒเต‹เด—เตเด•เตพ เดธเต‚เด•เตเดทเดฟเด•เตเด•เดฐเตเดคเต. เด•เตเดฑเดžเตเดžเดคเต, เด‡เดคเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดตเดณเตผเดšเตเดšเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต, เด†เดฐเตเด‚ เดฒเต‹เด—เตเด•เตพ เดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดŽเดฒเตเดฒเดพ เดฒเต‹เด—เตเด•เดณเตเด‚ stdout-เดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เดฃเด‚. เด…เดตเดฟเดŸเต† เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดต เด‡เดคเดฟเดจเด•เด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เดฒเต‹เด—เตเด•เตพ.

เดชเดฟ: เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต, เด’เดฐเต เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดค เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ, เด’เดฐเต เดซเดฟเดธเดฟเด•เตเด•เตฝ เดจเต‹เดกเดฟเตฝ, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดกเดพเดฑเตเดฑเดฏเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต เดฒเต‹เด—เตเด•เตพ เด‡เดŸเดพเตป เด•เดดเดฟเดฏเตเดฎเต‹?

AI: เดจเต‹เดกเดฟเดจเตเดฑเต† เดกเดฟเดธเตเด•เดฟเตฝ เดฒเต‹เดกเต เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เดฎเดฑเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต. เดฒเต‹เด—เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดฑเตŠเดŸเตเดŸเต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต.
เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด“เดŸเดพเด‚.

เดชเดฟ: เด‡เด—เต‹เตผ เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต, เดŽเดจเตเดคเดพเดฃเต เดตเดพเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดจเต† เด‰เดชเดฆเต‡เดถเดฟเด•เตเด•เดพเดฎเต‹?

AI: เด†เดฆเตเดฏเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด• เดกเต‹เด•เตเด•เตผ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดถเตเดชเดพเตผเดถเด•เตพ, เด…เดตเดฐเต†เด•เตเด•เดพเตพ เดจเดจเตเดจเดพเดฏเดฟ เดกเต‹เด•เตเด•เดฑเต† เด†เตผเด•เตเด•เตเด‚ เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด‡เดจเตเดฑเต‡เตบเดทเดฟเดชเตเดชเต เดฒเดญเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดชเต‹เด•เตเด• เดคเต€เดตเตเดฐเดฎเดพเดฏ. เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ, เดชเดฐเดฟเดถเต€เดฒเดจเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดฎเดฐเดฟเดšเตเดšเต.

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

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