เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจ—เจพเจˆเจก

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

เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจ—เจพเจˆเจก

เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจ•เฉ€ เจนเฉˆ?

เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจ‡เฉฑเจ• เจŸเฉ‚เจฒ เจนเฉˆ เจœเฉ‹ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค เจ‡เจน เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเฉ€ เจคเจพเจ‡เจจเจพเจคเฉ€ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

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

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

เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจŸเฉˆเจ•เจจเจพเจฒเฉ‹เจœเฉ€, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฐเจฒ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจตเจฐเจฃเจจ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจ•เจˆ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆเฅค

เจกเฉŒเจ•เจฐ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจตเจฟเจšเจ•เจพเจฐ เจ…เฉฐเจคเจฐ

เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ (เจธเฉ‡เจตเจพเจตเจพเจ‚) เจฆเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจ•เจˆ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจŸเฉ‚เจฒ เจกเฉŒเจ•เจฐ เจตเจฐเจ—เฉ€เจ†เจ‚ เจนเฉ€ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจ—เจพเจˆเจก
เจกเฉŒเจ•เจฐ (เจธเจฟเฉฐเจ—เจฒ เจ•เฉฐเจŸเฉ‡เจจเจฐ) เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ (เจฎเจฒเจŸเฉ€เจชเจฒ เจ•เฉฐเจŸเฉ‡เจจเจฐ)

เจ†เจฎ เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ‡เจธ

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

เจ•เจฒเจชเจจเจพ เจ•เจฐเฉ‹ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเฉˆเจฌ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจตเจฟเจ•เจพเจธเจ•เจพเจฐ เจนเฉ‹เฅค เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฆเฉ‹ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจชเจนเจฟเจฒเจพ เจ•เจพเจฐเฉ‹เจฌเจพเจฐเฉ€ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจ เจ•เฉ เจ•เจฒเจฟเฉฑเจ•เจพเจ‚ เจจเจพเจฒ เจ”เจจเจฒเจพเจˆเจจ เจธเจŸเฉ‹เจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ เจ—เจพเจนเจ• เจธเจนเจพเจ‡เจคเจพ เจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจนเฉˆ. เจ‡เจน เจฆเฉ‹ เจธเจพเจˆเจŸเจพเจ‚ เจ‡เฉฑเจ•เฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

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

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

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

เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ-เจธเจฐเจตเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเจพ เจตเจฟเจ•เจพเจธ เจ•เจฐเจจเจพ

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

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

เจ†เจ“ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจเฅค

โ–1. เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃเจพ

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

  • เจซเจพเจ‡เจฒ docker-compose.yml. เจ‡เจน เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจ•เฉฐเจชเฉ‹เจœเจผ เจซเจพเจˆเจฒ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจนเจฆเจพเจ‡เจคเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค
  • เจซเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ server. เจ‡เจธ เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค
  • เจซเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ client. เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจซเจพเจˆเจฒเจพเจ‚ เจธเจฅเจฟเจค เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚เฅค

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

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

โ–2. เจธเจฐเจตเจฐ เจฐเจšเจจเจพ

เจ‡เฉฑเจฅเฉ‡, เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจฆเฉ‡ เจธเฉฐเจฌเฉฐเจง เจตเจฟเฉฑเจš เจ•เฉเจ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉ‚เจนเจพเจ‚เจ—เฉ‡เฅค

2 เจ. เจซเจพเจˆเจฒเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ

เจซเฉ‹เจฒเจกเจฐ เจคเฉ‡ เจœเจพเจ“ 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!

เจ‡เจน เจŸเฉˆเจ•เจธเจŸ เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

2 เจกเฉ€. เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจซเจพเจˆเจฒ เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ 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. เจ‡เฉฑเจ• เจ—เจพเจนเจ• เจฌเจฃเจพเจ“

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

3 เจ. เจซเจพเจˆเจฒเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ

เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ 'เจคเฉ‡ เจœเจพเจ“ 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

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