เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเต, เดžเด™เตเด™เตพ เด‡เดจเตเดจเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดตเตผเดคเตเดคเดจเด‚, เด‡เดคเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดชเด เดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เดพเดฏเดฟ เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต†เดจเตเดจเตเด‚ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเดฐเตเดŸเต† เด†เดฆเตเดฏเดคเตเดคเต† เด•เตเดฒเดฏเดจเตเดฑเต-เดธเต†เตผเดตเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เดชเดฑเดฏเตเดจเตเดจเต. เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเดจเตเดฑเต† เดตเดพเดฏเดจเด•เตเด•เดพเดฐเดจเต เดกเต‹เด•เตเด•เดฑเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฃเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เด‡เดคเต เด…เด™เตเด™เดจเต†เดฏเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚ เด‡เดคเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดŸเต† เดชเดฐเดฎเตเดชเดฐ เด‡เดคเต เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดฌเต‡เดธเดฟเด•เตโ€ŒเดธเดฟเดจเตŠเดชเตเดชเด‚ เดกเต‹เด•เตเด•เตผ เดฌเต‡เดธเดฟเด•เตโ€Œเดธเต เด•เดตเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเต‹เดธเตเดฑเตเดฑเต, เด’เดชเตเดชเด‚ เด‡เดคเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเตผเด•เตเด•เตเดณเตเดณ เดฒเต‡เด–เดจเด‚.

เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

เดŽเดจเตเดคเดพเดฃเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต?

เดกเต‹เด•เตเด•เดฑเดฟเดจเตŠเดชเตเดชเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดŸเต‚เดณเดพเดฃเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต. เดชเดฆเตเดงเดคเดฟ เดตเดฟเดจเตเดฏเดพเดธเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฃเต เด‡เดคเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เดกเต‹เด•เตเด•เดฑเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดชเด เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เด…เดญเดฟเดฎเตเด–เต€เด•เดฐเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฌเดพเดนเตเดฏ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเต†เดฏเต‹ เดšเดฟเดฒ เดธเต‡เดตเดจเด™เตเด™เดณเต†เดฏเต‹ เด†เดถเตเดฐเดฏเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ, เด…เดคเตเดคเดฐเด‚ เดชเตเดฐเดฏเต‹เด—เด™เตเด™เตพ เดตเดฟเดฐเดณเดฎเดพเดฃเต. เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเดฟเตฝ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต.

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

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดŸเต†เด•เตเดจเต‹เดณเดœเดฟ, เด…เดคเดฟเดจเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเดฐเดตเดงเดฟ เดธเต‡เดตเดจเด™เตเด™เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเต‹เด•เตเด•เดฑเตเด‚ เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด‚

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจ เดตเตเดฏเด•เตเดคเดฟเด—เดค เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ (เดธเต‡เดตเดจเด™เตเด™เตพ) เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดŸเต‚เตพ เดกเต‹เด•เตเด•เดฑเดฟเดจเตเดฑเต† เด…เดคเต‡ เด•เดดเดฟเดตเตเด•เตพ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต
เดกเต‹เด•เตเด•เตผ (เดธเดฟเด‚เด—เดฟเตพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ), เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต (เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ)

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเดฟเดจเดพเดฏเดฟ เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด— เด•เต‡เดธเต

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

เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดตเต†เดฌเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดกเต†เดตเดฒเดชเตเดชเตผ เด†เดฃเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เตเด•. เดˆ เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เดฐเดฃเตเดŸเต เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดเดคเดพเดจเตเด‚ เด•เตเดฒเดฟเด•เตเด•เตเด•เดณเดฟเดฒเต‚เดŸเต† เด“เตบเดฒเตˆเตป เดธเตเดฑเตเดฑเต‹เดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดฌเดฟเดธเดฟเดจเดธเตเดธเต เด†เดณเตเด•เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด‰เดชเดญเต‹เด•เตเดคเตƒ เดชเดฟเดจเตเดคเตเดฃเดฏเต† เดฒเด•เตเดทเตเดฏเด‚ เดตเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต. เดˆ เดฐเดฃเตเดŸเต เดธเตˆเดฑเตเดฑเตเด•เดณเตเด‚ เด’เดฐเต‡ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เต‚เดŸเตเดคเตฝ เด•เต‚เดŸเตเดคเตฝ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดตเตเด•เดฏเดพเดฃเต, เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดชเดตเตผ เด‡เดจเดฟ เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดฒเตเดฒเต†เดจเตเดจเต เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฎเตเดดเตเดตเตป เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด‚ เดฎเดฑเตเดฑเตŠเดฐเต เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดพเตป เดจเดฟเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดธเดฎเดฏเด‚ เดธเต‡เดตเดจเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เดชเตเดจเดƒเด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด’เดจเตเดจเตเด‚ เดฎเดฑเด•เตเด•เดฟเดฒเตเดฒเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

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

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเต-เดธเต†เตผเดตเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

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

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดกเต‹เด•เตเด•เดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏ เดงเดพเดฐเดฃเดฏเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดกเต‹เด•เตเด•เตผ เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฎเตเด•เตเด•เต เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเด‚.

โ–1. เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

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

  • เดซเดฏเดฒเต docker-compose.yml. เดธเต‡เดตเดจเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดซเดฏเดฒเดพเดฃเดฟเดคเต.
  • เดซเต‡เดพเตพเดกเตผ server. เดธเต†เตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเดฏเดฒเตเด•เตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.
  • เดซเต‡เดพเตพเดกเตผ client. เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เด‡เดตเดฟเดŸเต† เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚.

เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดซเต‹เตพเดกเดฑเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

.
โ”œโ”€โ”€ client/
โ”œโ”€โ”€ docker-compose.yml
โ””โ”€โ”€ server/
2 directories, 1 file

โ–2. เด’เดฐเต เดธเต†เตผเดตเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดตเดฟเดŸเต†, เด’เดฐเต เดธเต†เตผเดตเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดกเต‹เด•เตเด•เดฑเดฟเดจเต† เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดš เดšเดฟเดฒ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด•เดพเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดธเตเดชเตผเดถเดฟเด•เตเด•เตเด‚.

2a. เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• server เด…เดคเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

  • เดซเดฏเดฒเต server.py. เด…เดคเดฟเตฝ เดธเต†เตผเดตเตผ เด•เต‹เดกเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.
  • เดซเดฏเดฒเต index.html. เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด’เดฐเต เดตเดพเดšเด•เด‚ เดˆ เดซเดฏเดฒเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.
  • เดซเดฏเดฒเต Dockerfile. เดธเต†เตผเดตเตผ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เดกเต‹เด•เตเด•เตผ เดซเดฏเดฒเดพเดฃเดฟเดคเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดซเต‹เตพเดกเดฑเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ server/:

.
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ index.html
โ””โ”€โ”€ server.py
0 directories, 3 files

2เดฌเดฟ. เด’เดฐเต เดชเตˆเดคเตเดคเตบ เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด• server.py เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต:

#!/usr/bin/env python3

# ะ˜ะผะฟะพั€ั‚ ัะธัั‚ะตะผะฝั‹ั… ะฑะธะฑะปะธะพั‚ะตะบ python.
# ะญั‚ะธ ะฑะธะฑะปะธะพั‚ะตะบะธ ะฑัƒะดัƒั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒัั ะดะปั ัะพะทะดะฐะฝะธั ะฒะตะฑ-ัะตั€ะฒะตั€ะฐ.
# ะ’ะฐะผ ะฝะต ะฝัƒะถะฝะพ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐั‚ัŒ ั‡ั‚ะพ-ั‚ะพ ะพัะพะฑะตะฝะฝะพะต, ัั‚ะธ ะฑะธะฑะปะธะพั‚ะตะบะธ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐัŽั‚ัั ะฒะผะตัั‚ะต ั Python.

import http.server
import socketserver

# ะญั‚ะฐ ะฟะตั€ะตะผะตะฝะฝะฐั ะฝัƒะถะฝะฐ ะดะปั ะพะฑั€ะฐะฑะพั‚ะบะธ ะทะฐะฟั€ะพัะพะฒ ะบะปะธะตะฝั‚ะฐ ะบ ัะตั€ะฒะตั€ัƒ.

handler = http.server.SimpleHTTPRequestHandler

# ะขัƒั‚ ะผั‹ ัƒะบะฐะทั‹ะฒะฐะตะผ, ั‡ั‚ะพ ัะตั€ะฒะตั€ ะผั‹ ั…ะพั‚ะธะผ ะทะฐะฟัƒัั‚ะธั‚ัŒ ะฝะฐ ะฟะพั€ั‚ะต 1234. 
# ะŸะพัั‚ะฐั€ะฐะนั‚ะตััŒ ะทะฐะฟะพะผะฝะธั‚ัŒ ัั‚ะธ ัะฒะตะดะตะฝะธั, ั‚ะฐะบ ะบะฐะบ ะพะฝะธ ะฝะฐะผ ะพั‡ะตะฝัŒ ะฟั€ะธะณะพะดัั‚ัั ะฒ ะดะฐะปัŒะฝะตะนัˆะตะผ, ะฟั€ะธ ั€ะฐะฑะพั‚ะต ั docker-compose.

with socketserver.TCPServer(("", 1234), handler) as httpd:

    # ะ‘ะปะฐะณะพะดะฐั€ั ัั‚ะพะน ะบะพะผะฐะฝะดะต ัะตั€ะฒะตั€ ะฑัƒะดะตั‚ ะฒั‹ะฟะพะปะฝัั‚ัŒัั ะฟะพัั‚ะพัะฝะฝะพ, ะพะถะธะดะฐั ะทะฐะฟั€ะพัะพะฒ ะพั‚ ะบะปะธะตะฝั‚ะฐ.

   httpd.serve_forever()

เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดตเต†เดฌเต เดธเต†เตผเดตเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดˆ เด•เต‹เดกเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเตป เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เต เดซเดฏเตฝ เดจเตฝเด•เตเด‚ index.html, เด‡เดคเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเดฟเดจเตเดจเต€เดŸเต เดตเต†เดฌเต เดชเต‡เดœเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

2c. เด’เดฐเต HTML เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดซเดฏเตฝ เดšเต†เดฏเตเดฏเดพเตป index.html เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดพเดšเด•เด‚ เดšเต‡เตผเด•เตเด•เตเด•:

Docker-Compose is magic!

เดˆ เดตเดพเดšเด•เด‚ เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตเด•เตเด•เตเด‚.

2d. เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ Dockerfile, เดชเตˆเดคเตเดคเตบ เดธเต†เตผเดตเดฑเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟ เดฑเตบเดŸเตˆเด‚ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚ เด†เตผเด•เตเด•เดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ, เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดฐเต€เดคเดฟเดฏเดฟเตฝ, เดชเตˆเดคเตเดคเดฃเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เดคเดพ:

# ะะฐ ะฒััะบะธะน ัะปัƒั‡ะฐะน ะฝะฐะฟะพะผะธะฝะฐัŽ, ั‡ั‚ะพ Dockerfile ะฒัะตะณะดะฐ ะดะพะปะถะตะฝ ะฝะฐั‡ะธะฝะฐั‚ัŒัั ั ะธะผะฟะพั€ั‚ะฐ ะฑะฐะทะพะฒะพะณะพ ะพะฑั€ะฐะทะฐ.
# ะ”ะปั ัั‚ะพะณะพ ะธัะฟะพะปัŒะทัƒะตั‚ัั ะบะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'FROM'.
# ะ—ะดะตััŒ ะฝะฐะผ ะฝัƒะถะฝะพ ะธะผะฟะพั€ั‚ะธั€ะพะฒะฐั‚ัŒ ะพะฑั€ะฐะท python (ั DockerHub).
# ะ’ ั€ะตะทัƒะปัŒั‚ะฐั‚ะต ะผั‹, ะฒ ะบะฐั‡ะตัั‚ะฒะต ะธะผะตะฝะธ ะพะฑั€ะฐะทะฐ, ัƒะบะฐะทั‹ะฒะฐะตะผ 'python', ะฐ ะฒ ะบะฐั‡ะตัั‚ะฒะต ะฒะตั€ัะธะธ - 'latest'.

FROM python:latest

# ะ”ะปั ั‚ะพะณะพ ั‡ั‚ะพะฑั‹ ะทะฐะฟัƒัั‚ะธั‚ัŒ ะฒ ะบะพะฝั‚ะตะนะฝะตั€ะต ะบะพะด, ะฝะฐะฟะธัะฐะฝะฝั‹ะน ะฝะฐ Python, ะฝะฐะผ ะฝัƒะถะฝะพ ะธะผะฟะพั€ั‚ะธั€ะพะฒะฐั‚ัŒ ั„ะฐะนะปั‹ 'server.py' ะธ 'index.html'.
# ะ”ะปั ั‚ะพะณะพ ั‡ั‚ะพะฑั‹ ัั‚ะพ ัะดะตะปะฐั‚ัŒ, ะผั‹ ะธัะฟะพะปัŒะทัƒะตะผ ะบะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'ADD'.
# ะŸะตั€ะฒั‹ะน ะฟะฐั€ะฐะผะตั‚ั€, 'server.py', ะฟั€ะตะดัั‚ะฐะฒะปัะตั‚ ัะพะฑะพะน ะธะผั ั„ะฐะนะปะฐ, ั…ั€ะฐะฝัั‰ะตะณะพัั ะฝะฐ ะบะพะผะฟัŒัŽั‚ะตั€ะต.
# ะ’ั‚ะพั€ะพะน ะฟะฐั€ะฐะผะตั‚ั€, '/server/', ัั‚ะพ ะฟัƒั‚ัŒ, ะฟะพ ะบะพั‚ะพั€ะพะผัƒ ะฝัƒะถะฝะพ ั€ะฐะทะผะตัั‚ะธั‚ัŒ ัƒะบะฐะทะฐะฝะฝั‹ะน ั„ะฐะนะป ะฒ ะพะฑั€ะฐะทะต.
# ะ—ะดะตััŒ ะผั‹ ะฟะพะผะตั‰ะฐะตะผ ั„ะฐะนะป ะฒ ะฟะฐะฟะบัƒ ะพะฑั€ะฐะทะฐ '/server/'.

ADD server.py /server/
ADD index.html /server/

# ะ—ะดะตััŒ ะผั‹ ะฒะพัะฟะพะปัŒะทัƒะตะผัั ะบะพะผะฐะฝะดะพะน 'WORKDIR', ะฒะพะทะผะพะถะฝะพ, ะฝะพะฒะพะน ะดะปั ะฒะฐั.
# ะžะฝะฐ ะฟะพะทะฒะพะปัะตั‚ ะธะทะผะตะฝะธั‚ัŒ ั€ะฐะฑะพั‡ัƒัŽ ะดะธั€ะตะบั‚ะพั€ะธัŽ ะพะฑั€ะฐะทะฐ.
# ะ’ ะบะฐั‡ะตัั‚ะฒะต ั‚ะฐะบะพะน ะดะธั€ะตะบั‚ะพั€ะธะธ, ะฒ ะบะพั‚ะพั€ะพะน ะฑัƒะดัƒั‚ ะฒั‹ะฟะพะปะฝัั‚ัŒัั ะฒัะต ะบะพะผะฐะฝะดั‹, ะผั‹ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ '/server/'.

WORKDIR /server/

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เด•เตเดฒเดฏเดจเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเด‚.

โ–3. เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เด•เตเดฒเดฏเดจเตเดฑเต เดตเดถเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดšเดฟเดฒ เดกเต‹เด•เตเด•เตผ เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดžเด™เตเด™เตพ เด“เตผเด•เตเด•เตเด‚.

3a. เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• client เด…เดคเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

  • เดซเดฏเดฒเต client.py. เด•เตเดฒเดฏเดจเตเดฑเต เด•เต‹เดกเต เด‡เดตเดฟเดŸเต† เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเด‚.
  • เดซเดฏเดฒเต Dockerfile. เดธเต†เตผเดตเตผ เดซเต‹เตพเดกเดฑเดฟเดฒเต† เดธเดฎเดพเดจ เดซเดฏเดฒเดฟเดจเตเดฑเต† เด…เดคเต‡ เดฑเต‹เตพ เดˆ เดซเดฏเดฒเตเด‚ เดตเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดพเดฏเดคเต, เด•เตเดฒเดฏเดจเตเดฑเต เด•เต‹เดกเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดŽเด™เตเด™เดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดซเต‹เตพเดกเตผ client/ เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด†เดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

.
โ”œโ”€โ”€ client.py
โ””โ”€โ”€ Dockerfile
0 directories, 2 files

3เดฌเดฟ. เด’เดฐเต เดชเตˆเดคเตเดคเตบ เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด• client.py เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดกเต:

#!/usr/bin/env python3

# ะ˜ะผะฟะพั€ั‚ะธั€ัƒะตะผ ัะธัั‚ะตะผะฝัƒัŽ ะฑะธะฑะปะธะพั‚ะตะบัƒ Python.
# ะžะฝะฐ ะธัะฟะพะปัŒะทัƒะตั‚ัั ะดะปั ะทะฐะณั€ัƒะทะบะธ ั„ะฐะนะปะฐ 'index.html' ั ัะตั€ะฒะตั€ะฐ.
# ะะธั‡ะตะณะพ ะพัะพะฑะตะฝะฝะพะณะพ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐั‚ัŒ ะฝะต ะฝัƒะถะฝะพ, ัั‚ะฐ ะฑะธะฑะปะธะพั‚ะตะบะฐ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐะตั‚ัั ะฒะผะตัั‚ะต ั Python.

import urllib.request

# ะญั‚ะฐ ะฟะตั€ะตะผะตะฝะฝะฐั ัะพะดะตั€ะถะธั‚ ะทะฐะฟั€ะพั ะบ 'http://localhost:1234/'.
# ะ’ะพะทะผะพะถะฝะพ, ัะตะนั‡ะฐั ะฒั‹ ะทะฐะดะฐั‘ั‚ะตััŒ ะฒะพะฟั€ะพัะพะผ ะพ ั‚ะพะผ, ั‡ั‚ะพ ั‚ะฐะบะพะต 'http://localhost:1234'.
# localhost ัƒะบะฐะทั‹ะฒะฐะตั‚ ะฝะฐ ั‚ะพ, ั‡ั‚ะพ ะฟั€ะพะณั€ะฐะผะผะฐ ั€ะฐะฑะพั‚ะฐะตั‚ ั ะปะพะบะฐะปัŒะฝั‹ะผ ัะตั€ะฒะตั€ะพะผ.
# 1234 - ัั‚ะพ ะฝะพะผะตั€ ะฟะพั€ั‚ะฐ, ะบะพั‚ะพั€ั‹ะน ะฒะฐะผ ะฟั€ะตะดะปะฐะณะฐะปะพััŒ ะทะฐะฟะพะผะฝะธั‚ัŒ ะฟั€ะธ ะฝะฐัั‚ั€ะพะนะบะต ัะตั€ะฒะตั€ะฝะพะณะพ ะบะพะดะฐ.

fp = urllib.request.urlopen("http://localhost:1234/")

# 'encodedContent' ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ะทะฐะบะพะดะธั€ะพะฒะฐะฝะฝะพะผัƒ ะพั‚ะฒะตั‚ัƒ ัะตั€ะฒะตั€ะฐ ('index.html').
# 'decodedContent' ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ั€ะฐัะบะพะดะธั€ะพะฒะฐะฝะฝะพะผัƒ ะพั‚ะฒะตั‚ัƒ ัะตั€ะฒะตั€ะฐ (ั‚ัƒั‚ ะฑัƒะดะตั‚ ั‚ะพ, ั‡ั‚ะพ ะผั‹ ั…ะพั‚ะธะผ ะฒั‹ะฒะตัั‚ะธ ะฝะฐ ัะบั€ะฐะฝ).

encodedContent = fp.read()
decodedContent = encodedContent.decode("utf8")

# ะ’ั‹ะฒะพะดะธะผ ัะพะดะตั€ะถะธะผะพะต ั„ะฐะนะปะฐ, ะฟะพะปัƒั‡ะตะฝะฝะพะณะพ ั ัะตั€ะฒะตั€ะฐ ('index.html').

print(decodedContent)

# ะ—ะฐะบั€ั‹ะฒะฐะตะผ ัะพะตะดะธะฝะตะฝะธะต ั ัะตั€ะฒะตั€ะพะผ.

fp.close()

เดˆ เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

3c. เดกเต‹เด•เตเด•เตผเดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเต†เดจเตเดจเดชเต‹เดฒเต†, เดžเด™เตเด™เตพ เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต Dockerfile, เดชเตˆเดคเตเดคเตบ เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚. เด•เตเดฒเดฏเดจเตเดฑเต เด•เต‹เดกเต เด‡เดคเดพ Dockerfile:

# ะขะพ ะถะต ัะฐะผะพะต, ั‡ั‚ะพ ะธ ะฒ ัะตั€ะฒะตั€ะฝะพะผ Dockerfile.

FROM python:latest

# ะ˜ะผะฟะพั€ั‚ะธั€ัƒะตะผ 'client.py' ะฒ ะฟะฐะฟะบัƒ '/client/'.

ADD client.py /client/

# ะฃัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฒ ะบะฐั‡ะตัั‚ะฒะต ั€ะฐะฑะพั‡ะตะน ะดะธั€ะตะบั‚ะพั€ะธะธ '/client/'.

WORKDIR /client/

โ–4. เดกเต‹เด•เตเด•เตผ เดฐเดšเดจ

เดจเดฟเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต: เด’เดฐเต เดธเต†เตผเดตเดฑเตเด‚ เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเตเด‚. เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดซเดฏเตฝ เด‰เดฃเตเดŸเต Dockerfile. เด‡เดคเตเดตเดฐเต†, เดธเด‚เดญเดตเดฟเดšเตเดšเดคเต†เดฒเตเดฒเดพเด‚ เดกเต‹เด•เตเด•เดฑเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เดชเตเดชเตเดฑเด‚ เดชเต‹เดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚ docker-compose.yml, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฑเต‚เดŸเตเดŸเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด‡เดตเดฟเดŸเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเดพเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เด•เดฎเดพเตปเดกเตเด•เดณเตเด‚ เด•เดตเตผ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• docker-compose.yml. เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เดฑเดฟเดตเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต‚เดŸเต† เดจเดŸเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดฒเด•เตเดทเตเดฏเด‚.

เดซเดฏเดฒเดฟเตฝ เด‡เดŸเต‡เดฃเตเดŸ เด•เต‹เดกเต เด‡เดคเดพ docker-compose.yml:

# ะคะฐะนะป docker-compose ะดะพะปะถะตะฝ ะฝะฐั‡ะธะฝะฐั‚ัŒัั ั ั‚ะตะณะฐ ะฒะตั€ัะธะธ.
# ะœั‹ ะธัะฟะพะปัŒะทัƒะตะผ "3" ั‚ะฐะบ ะบะฐะบ ัั‚ะพ - ัะฐะผะฐั ัะฒะตะถะฐั ะฒะตั€ัะธั ะฝะฐ ะผะพะผะตะฝั‚ ะฝะฐะฟะธัะฐะฝะธั ัั‚ะพะณะพ ะบะพะดะฐ.

version: "3"

# ะกะปะตะดัƒะตั‚ ัƒั‡ะธั‚ั‹ะฒะฐั‚ัŒ, ั‡ั‚ะพ docker-composes ั€ะฐะฑะพั‚ะฐะตั‚ ั ัะตั€ะฒะธัะฐะผะธ.
# 1 ัะตั€ะฒะธั = 1 ะบะพะฝั‚ะตะนะฝะตั€.
# ะกะตั€ะฒะธัะพะผ ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะบะปะธะตะฝั‚, ัะตั€ะฒะตั€, ัะตั€ะฒะตั€ ะฑะฐะท ะดะฐะฝะฝั‹ั…...
# ะ ะฐะทะดะตะป, ะฒ ะบะพั‚ะพั€ะพะผ ะฑัƒะดัƒั‚ ะพะฟะธัะฐะฝั‹ ัะตั€ะฒะธัั‹, ะฝะฐั‡ะธะฝะฐะตั‚ัั ั 'services'.

services:

  # ะšะฐะบ ัƒะถะต ะฑั‹ะปะพ ัะบะฐะทะฐะฝะพ, ะผั‹ ัะพะฑะธั€ะฐะตะผัั ัะพะทะดะฐั‚ัŒ ะบะปะธะตะฝั‚ัะบะพะต ะธ ัะตั€ะฒะตั€ะฝะพะต ะฟั€ะธะปะพะถะตะฝะธั.
  # ะญั‚ะพ ะพะทะฝะฐั‡ะฐะตั‚, ั‡ั‚ะพ ะฝะฐะผ ะฝัƒะถะฝะพ ะดะฒะฐ ัะตั€ะฒะธัะฐ.
  # ะŸะตั€ะฒั‹ะน ัะตั€ะฒะธั (ะบะพะฝั‚ะตะนะฝะตั€): ัะตั€ะฒะตั€.
  # ะะฐะทะฒะฐั‚ัŒ ะตะณะพ ะผะพะถะฝะพ ั‚ะฐะบ, ะบะฐะบ ะฝัƒะถะฝะพ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบัƒ.
  # ะŸะพะฝัั‚ะฝะพะต ะฝะฐะทะฒะฐะฝะธะต ัะตั€ะฒะธัะฐ ะฟะพะผะพะณะฐะตั‚ ะพะฟั€ะตะดะตะปะธั‚ัŒ ะตะณะพ ั€ะพะปัŒ.
  # ะ—ะดะตััŒ ะผั‹, ะดะปั ะธะผะตะฝะพะฒะฐะฝะธั ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‰ะตะณะพ ัะตั€ะฒะธัะฐ, ะธัะฟะพะปัŒะทัƒะตะผ ะบะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'server'.

  server:
 
    # ะšะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ "build" ะฟะพะทะฒะพะปัะตั‚ ะทะฐะดะฐั‚ัŒ
    # ะฟัƒั‚ัŒ ะบ ั„ะฐะนะปัƒ Dockerfile, ะบะพั‚ะพั€ั‹ะน ะฝัƒะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะดะปั ัะพะทะดะฐะฝะธั ะพะฑั€ะฐะทะฐ,
    # ะบะพั‚ะพั€ั‹ะน ะฟะพะทะฒะพะปะธั‚ ะทะฐะฟัƒัั‚ะธั‚ัŒ ัะตั€ะฒะธั.
    # ะ—ะดะตััŒ 'server/' ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ะฟัƒั‚ะธ ะบ ะฟะฐะฟะบะต ัะตั€ะฒะตั€ะฐ,
    # ะบะพั‚ะพั€ะฐั ัะพะดะตั€ะถะธั‚ ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‰ะธะน Dockerfile.

    build: server/

    # ะšะพะผะฐะฝะดะฐ, ะบะพั‚ะพั€ัƒัŽ ะฝัƒะถะฝะพ ะทะฐะฟัƒัั‚ะธั‚ัŒ ะฟะพัะปะต ัะพะทะดะฐะฝะธั ะพะฑั€ะฐะทะฐ.
    # ะกะปะตะดัƒัŽั‰ะฐั ะบะพะผะฐะฝะดะฐ ะพะทะฝะฐั‡ะฐะตั‚ ะทะฐะฟัƒัะบ "python ./server.py".

    command: python ./server.py

    # ะ’ัะฟะพะผะฝะธั‚ะต ะพ ั‚ะพะผ, ั‡ั‚ะพ ะฒ ะบะฐั‡ะตัั‚ะฒะต ะฟะพั€ั‚ะฐ ะฒ 'server/server.py' ัƒะบะฐะทะฐะฝ ะฟะพั€ั‚ 1234.
    # ะ•ัะปะธ ะผั‹ ั…ะพั‚ะธะผ ะพะฑั€ะฐั‚ะธั‚ัŒัั ะบ ัะตั€ะฒะตั€ัƒ ั ะฝะฐัˆะตะณะพ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ (ะฝะฐั…ะพะดัััŒ ะทะฐ ะฟั€ะตะดะตะปะฐะผะธ ะบะพะฝั‚ะตะนะฝะตั€ะฐ),
    # ะผั‹ ะดะพะปะถะฝั‹ ะพั€ะณะฐะฝะธะทะพะฒะฐั‚ัŒ ะฟะตั€ะตะฝะฐะฟั€ะฐะฒะปะตะฝะธะต ัั‚ะพะณะพ ะฟะพั€ั‚ะฐ ะฝะฐ ะฟะพั€ั‚ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ.
    # ะกะดะตะปะฐั‚ัŒ ัั‚ะพ ะฝะฐะผ ะฟะพะผะพะถะตั‚ ะบะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'ports'.
    # ะŸั€ะธ ะตะณะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ะฟั€ะธะผะตะฝัะตั‚ัั ัะปะตะดัƒัŽั‰ะฐั ะบะพะฝัั‚ั€ัƒะบั†ะธั: [ะฟะพั€ั‚ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ]:[ะฟะพั€ั‚ ะบะพะฝั‚ะตะนะฝะตั€ะฐ]
    # ะ’ ะฝะฐัˆะตะผ ัะปัƒั‡ะฐะต ะฝัƒะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฟะพั€ั‚ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ 1234 ะธ ะพั€ะณะฐะฝะธะทะพะฒะฐั‚ัŒ ะตะณะพ ัะฒัะทัŒ ั ะฟะพั€ั‚ะพะผ
    # 1234 ะบะพะฝั‚ะตะนะฝะตั€ะฐ (ั‚ะฐะบ ะบะฐะบ ะธะผะตะฝะฝะพ ะฝะฐ ัั‚ะพั‚ ะฟะพั€ั‚ ัะตั€ะฒะตั€ 
    # ะพะถะธะดะฐะตั‚ ะฟะพัั‚ัƒะฟะปะตะฝะธั ะทะฐะฟั€ะพัะพะฒ).

    ports:
      - 1234:1234

  # ะ’ั‚ะพั€ะพะน ัะตั€ะฒะธั (ะบะพะฝั‚ะตะนะฝะตั€): ะบะปะธะตะฝั‚.
  # ะญั‚ะพั‚ ัะตั€ะฒะธั ะฝะฐะทะฒะฐะฝ 'client'.

  client:
    # ะ—ะดะตััŒ 'client/ ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒะตั‚ ะฟัƒั‚ะธ ะบ ะฟะฐะฟะบะต, ะบะพั‚ะพั€ะฐั ัะพะดะตั€ะถะธั‚
    # ั„ะฐะนะป Dockerfile ะดะปั ะบะปะธะตะฝั‚ัะบะพะน ั‡ะฐัั‚ะธ ัะธัั‚ะตะผั‹.

    build: client/

    # ะšะพะผะฐะฝะดะฐ, ะบะพั‚ะพั€ัƒัŽ ะฝัƒะถะฝะพ ะทะฐะฟัƒัั‚ะธั‚ัŒ ะฟะพัะปะต ัะพะทะดะฐะฝะธั ะพะฑั€ะฐะทะฐ.
    # ะกะปะตะดัƒัŽั‰ะฐั ะบะพะผะฐะฝะดะฐ ะพะทะฝะฐั‡ะฐะตั‚ ะทะฐะฟัƒัะบ "python ./client.py".
 
    command: python ./client.py

    # ะšะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'network_mode' ะธัะฟะพะปัŒะทัƒะตั‚ัั ะดะปั ะพะฟะธัะฐะฝะธั ั‚ะธะฟะฐ ัะตั‚ะธ.
    # ะขัƒั‚ ะผั‹ ัƒะบะฐะทั‹ะฒะฐะตะผ ั‚ะพ, ั‡ั‚ะพ ะบะพะฝั‚ะตะนะฝะตั€ ะผะพะถะตั‚ ะพะฑั€ะฐั‰ะฐั‚ัŒัั ะบ 'localhost' ะบะพะผะฟัŒัŽั‚ะตั€ะฐ.

    network_mode: host

    # ะšะปัŽั‡ะตะฒะพะต ัะปะพะฒะพ 'depends_on' ะฟะพะทะฒะพะปัะตั‚ ัƒะบะฐะทั‹ะฒะฐั‚ัŒ, ะดะพะปะถะตะฝ ะปะธ ัะตั€ะฒะธั,
    # ะฟั€ะตะถะดะต ั‡ะตะผ ะทะฐะฟัƒัั‚ะธั‚ัŒัั, ะถะดะฐั‚ัŒ, ะบะพะณะดะฐ ะฑัƒะดัƒั‚ ะณะพั‚ะพะฒั‹ ะบ ั€ะฐะฑะพั‚ะต ะดั€ัƒะณะธะต ัะตั€ะฒะธัั‹.
    # ะะฐะผ ะฝัƒะถะฝะพ, ั‡ั‚ะพะฑั‹ ัะตั€ะฒะธั 'client' ะดะพะถะดะฐะปัั ะฑั‹ ะณะพั‚ะพะฒะฝะพัั‚ะธ ะบ ั€ะฐะฑะพั‚ะต ัะตั€ะฒะธัะฐ 'server'.
 
    depends_on:
      - server

โ–5. เดชเดฆเตเดงเดคเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต

เด…เด•เดคเตเดคเต เด•เดŸเดจเตเดจเดคเดฟเดจเต เดถเต‡เดทเด‚ docker-compose.yml เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดจเตฝเด•เดฟ, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดžเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดˆ เด˜เดŸเตเดŸเด‚ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต docker build, เดŽเดจเตเดจเดพเตฝ เด…เดจเตเดฌเดจเตเดง เด•เดฎเดพเตปเดกเต เดจเดฟเดฐเดตเดงเดฟ เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฃเต:

$ docker-compose build

โ–6. เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดฒเต‹เดžเตเดšเต

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

$ docker-compose up

เดˆ เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตเดฒเดฏเดจเตเดฑเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดค เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดŸเต†เตผเดฎเดฟเดจเดฒเดฟเตฝ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเด‚: Docker-Compose is magic!.

เด‡เดคเดฟเดจเด•เด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เดธเต†เตผเดตเตผ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ เดชเต‹เตผเดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต 1234 เด•เตเดฒเดฏเดจเตเดฑเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เดพเดฏเดฟ. เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดพเตฝ http://localhost:1234/, เด…เดคเต เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เด‰เดณเตเดณ เด’เดฐเต เดชเต‡เดœเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚ Docker-Compose is magic!.

เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เตพ

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏเต‡เด•เตเด•เดพเดตเตเดจเตเดจ เดšเดฟเดฒ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚.

เด•เดฎเดพเตปเดกเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเด‚ เดฎเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เดจเดฟเตผเดคเตเดคเดพเดจเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเดจเตเด‚ เดˆ เด•เดฎเดพเตปเดกเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต docker-compose up:

$ docker-compose down

เดˆ เด•เดฎเดพเตปเดกเต เดธเต‡เดตเดจ เดฒเต‹เด—เตเด•เตพ เดชเตเดฐเดฟเดจเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

$ docker-compose logs -f [service name]

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด‡เดคเต เดˆ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚: $ docker-compose logs -f [service name].

เดˆ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚:

$ docker-compose ps

เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เด’เดฐเต เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดˆ เด•เดฎเดพเตปเดกเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

$ docker-compose exec [service name] [command]

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเด•เดพเด‚: docker-compose exec server ls.

เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดˆ เด•เดฎเดพเตปเดกเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:

$ docker-compose images

เดซเดฒเด™เตเด™เตพ

เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต, เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด…เดฑเดฟเดตเต, เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด†เดดเดคเตเดคเดฟเตฝ เดชเด เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚. เด‡เดตเดฟเดŸเต† เดžเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เดจเต‹เด•เตเด•เดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เด•เต‹เดกเตเดณเตเดณ เด’เดฐเต เดถเต‡เด–เดฐเด‚.

เดชเตเดฐเดฟเดฏ เดตเดพเดฏเดจเด•เตเด•เดพเตผ! เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเดฟเตฝ เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹?

เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดคเตเดŸเด•เตเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด—เตˆเดกเต

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

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