เจฒเฉเจ เจฆเฉ เจฒเฉเจเจ, เจเจฟเจธเจฆเจพ เจ
เจจเฉเจตเจพเจฆ เจ
เจธเฉเจ เจ
เฉฑเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐ เจฐเจนเฉ เจนเจพเจ, เจฆเจพ เจเจนเจฟเจฃเจพ เจนเฉ เจเจฟ เจเจน เจเจนเจจเจพเจ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฒเจ เจนเฉ เจเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจธเจฟเฉฑเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจจ เจ
เจคเฉ เจกเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจชเจฃเฉ เจชเจนเจฟเจฒเฉ เจเจฒเจพเจเฉฐเจ-เจธเจฐเจตเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจฃ เจตเฉฑเจฒ เจตเจง เจฐเจนเฉ เจนเจจเฅค เจเจน เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ เจเจธ เจธเจฎเฉฑเจเจฐเฉ เจฆเจพ เจชเจพเจ เจ เจกเฉเจเจฐ เจฆเฉเจเจ เจฎเฉเจฒ เจเฉฑเจฒเจพเจ เจคเฉเจ เจเจพเจฃเฉ เจนเฉเฅค เจเฉ เจเจน เจเฉเจธ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจเฉฑเจ เจจเจเจผเจฐ เจฎเจพเจฐ เจธเจเจฆเฉ เจนเฉ
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจเฉ เจนเฉ?
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจเฉฑเจ เจเฉเจฒ เจนเฉ เจเฉ เจกเฉเจเจฐ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเฉเฅค เจเจน เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฆเฉ เจคเจพเจเจจเจพเจคเฉ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
เจกเฉเจเจฐ เจฆเฉเจเจ เจฎเฉเจฒ เจเฉฑเจฒเจพเจ เจธเจฟเฉฑเจเจฆเฉ เจนเฉเจ, เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจธเจงเจพเจฐเจจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฆเฉ เจฐเจเจจเจพ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเฉเจคเจพ เจนเฉเจตเฉ เจเฉ เจเฉเจฆเจฎเฉเจเจคเจฟเจเจฐเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ เจ เจคเฉ เจจเจฟเจฐเจญเจฐ เจจเจนเฉเจ เจเจฐเจฆเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฌเจพเจนเจฐเฉ เจกเจพเจเจพ เจธเจฐเฉเจคเจพเจ เจเจพเจ เจเฉเจ เจธเฉเจตเจพเจตเจพเจ 'เจคเฉเฅค เจ เจญเจฟเจเจธ เจตเจฟเฉฑเจ, เจ เจเจฟเจนเฉ เจเจพเจฐเจ เจฌเจนเฉเจค เจเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเจจ. เจ เจธเจฒ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจตเจฟเฉฑเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจเฉฑเจ เฉ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉเจเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฆเจพ เจเฉฑเจ เจชเฉเจฐเจพ เจธเจฎเฉเจน เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
เจคเฉเจนเจพเจจเฉเฉฐ เจเจฟเจตเฉเจ เจชเจคเจพ เจฒเฉฑเจเฉเจเจพ เจเจฟ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฟเจธเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจตเฉเจฒเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ? เจ เจธเจฒ เจตเจฟเฉฑเจ, เจเจน เจฌเจนเฉเจค เจนเฉ เจธเจงเจพเจฐเจจ เจนเฉ. เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจธ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจเจ เจธเฉเจตเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจเฉฐเจฎ เจ เจธเจเจฆเจพ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจ เจเจฟเจนเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจเจฟเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจเฉฑเจ เจตเฉเจฌเจธเจพเจเจ เจฌเจฃเจพเจเจเจฆเฉ เจนเฉ, เจเจฟเจธ เจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจเจฐเจจ เจฒเจ, เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจจเจพเจฒ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจ เจเจฟเจนเฉ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจฆเฉ เจธเฉเจตเจพเจตเจพเจ เจธเจผเจพเจฎเจฒ เจนเฉ เจธเจเจฆเฉเจเจ เจนเจจ - เจเฉฑเจ เจเฉ เจธเจพเจเจ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเฉฑเจ เจเฉ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจธเจฎเจฐเจฅเจจ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉเฅค
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจเฉเจเจจเจพเจฒเฉเจเฉ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจธเจฐเจฒ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจตเจฐเจฃเจจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจฎเจพเจเจก เจจเจพเจฒ เจเจ เจธเฉเจตเจพเจตเจพเจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฎเจฟเจฒเจฆเฉ เจนเฉเฅค
เจกเฉเจเจฐ เจ เจคเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจตเจฟเจเจเจพเจฐ เจ เฉฐเจคเจฐ
เจกเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจตเจฟเจ เจเจคเฉเจเจค เจเฉฐเจเฉเจจเจฐเจพเจ (เจธเฉเจตเจพเจตเจพเจ) เจฆเฉ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเฉ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจเจฆเฉ เจนเจจเฅค
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉฑเจเฉ เจธเจฎเฉเจ เจเจ เจเฉฐเจเฉเจจเจฐเจพเจ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจจ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเฉ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจเจฆเฉ เจนเจจเฅค เจเจน เจเฉเจฒ เจกเฉเจเจฐ เจตเจฐเจเฉเจเจ เจนเฉ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฆเฉ เจชเฉเจธเจผเจเจธเจผ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจกเฉเจเจฐ (เจธเจฟเฉฐเจเจฒ เจเฉฐเจเฉเจจเจฐ) เจ
เจคเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ (เจฎเจฒเจเฉเจชเจฒ เจเฉฐเจเฉเจจเจฐ)
เจเจฎ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจตเจฐเจคเฉเจ เจเฉเจธ
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ, เจธเฉฑเจเฉ เจนเฉฑเจฅเจพเจ เจตเจฟเฉฑเจ, เจเฉฑเจ เจฌเจนเฉเจค เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจเฉเจฒ เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจเจฐเจเฉเจเฉเจเจเจฐ เจจเจพเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจคเฉเจเจผเฉ เจจเจพเจฒ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจนเฉเจฃ เจ เจธเฉเจ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฟเจนเจพเจฐเจ เจตเจฐเจคเฉเจ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจฆเฉเจเจพเจเจเฉ, เจเจฟเจธเจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจคเฉเจนเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจซเจพเจเจฆเจฟเจเจ เจฆเจพ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเจจ เจฆเฉเจตเฉเจเจพ เจเฉ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเฉเจตเฉเจเจพเฅค
เจเจฒเจชเจจเจพ เจเจฐเฉ เจเจฟ เจคเฉเจธเฉเจ เจเฉฑเจ เจตเฉเจฌ เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจตเจฟเจเจพเจธเจเจพเจฐ เจนเฉเฅค เจเจธ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจฆเฉ เจตเฉเฉฑเจฌเจธเจพเจเจเจพเจ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจชเจนเจฟเจฒเจพ เจเจพเจฐเฉเจฌเจพเจฐเฉ เจฒเฉเจเจพเจ เจจเฉเฉฐ เจเฉเจ เจเฉ เจเจฒเจฟเฉฑเจเจพเจ เจจเจพเจฒ เจเจจเจฒเจพเจเจจ เจธเจเฉเจฐ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจฆเฉเจเจพ เจเจพเจนเจ เจธเจนเจพเจเจคเจพ เจฆเจพ เจเจฆเฉเจธเจผ เจนเฉ. เจเจน เจฆเฉ เจธเจพเจเจเจพเจ เจเฉฑเจเฉ เจกเฉเจเจพเจฌเฉเจธ เจจเจพเจฒ เจเฉฐเจเจฐเฉเจเจ เจเจฐเจฆเฉเจเจ เจนเจจเฅค
เจคเฉเจนเจพเจกเจพ เจชเฉเจฐเฉเจเฉเจเจ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ เจฐเจฟเจนเจพ เจนเฉ, เจ เจคเฉ เจเจน เจชเจคเจพ เจเจฒเจฆเจพ เจนเฉ เจเจฟ เจธเจฐเจตเจฐ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจเจฟเจธ 'เจคเฉ เจเจน เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ เจนเฉเจฃ เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเฉ. เจจเจคเฉเจเฉ เจตเจเฉเจ, เจคเฉเจธเฉเจ เจชเฉเจฐเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจฟเจธเฉ เจนเฉเจฐ เจฎเจธเจผเฉเจจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเจฐเจฆเฉ เจนเฉเฅค
เจฌเจฆเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, เจคเฉเจธเฉเจ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจตเจฐเจเฉ เจเฉเจ เจเฉเจเจผ เจจเจนเฉเจ เจตเจฐเจคเฉ เจนเฉเฅค เจเจธ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจตเจพเจฐ เจตเจฟเฉฑเจ เจธเฉเจตเจพเจตเจพเจ เจจเฉเฉฐ เจฎเจพเจเจเจฐเฉเจ เจเจฐเจจเจพ เจ เจคเฉ เจฎเฉเฉ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจชเจตเฉเจเจพ, เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจเจธ เจเฉฐเจฎ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉ เจจเจนเฉเจ เจญเฉเฉฑเจฒเฉเจเฉเฅค
เจเฉ เจคเฉเจธเฉเจ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจชเจฃเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเฉฑเจ เจจเจตเฉเจ เจธเจฐเจตเจฐ 'เจคเฉ เจฒเจฟเจเจพเจฃเจพ เจเฉฑเจ เจ เจเจฟเจนเจพ เจฎเจพเจฎเจฒเจพ เจนเฉ เจเจฟเจธ เจจเฉเฉฐ เจเฉเจ เจเจฎเจพเจเจกเจพเจ เจเจฒเจพ เจเฉ เจนเฉฑเจฒ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจฟเจธเฉ เจจเจตเฉเจ เจธเจฅเจพเจจ 'เจคเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจเฉเจฐเจพเจเจธเจซเจฐ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฟเจฐเจซ เจเฉเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจเจฐเจจ เจ เจคเฉ เจจเจตเฉเจ เจธเจฐเจตเจฐ 'เจคเฉ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจฌเฉเจเจ เฉฑเจช เจเจพเจชเฉ เจ เฉฑเจชเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจฒเจพเจเฉฐเจ-เจธเจฐเจตเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเจพ เจตเจฟเจเจพเจธ เจเจฐเจจเจพ
เจนเฉเจฃ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเจพเจฃเจฆเฉ เจนเฉ เจเจฟ เจ เจธเฉเจ เจกเฉเจเจฐ เจเฉฐเจชเฉเจเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจธ เจฒเจ เจเจฐเจจ เจเจพ เจฐเจนเฉ เจนเจพเจ, เจเจธ เจเฉเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจคเฉเจนเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจเจฒเจพเจเฉฐเจ-เจธเจฐเจตเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจฃ เจฆเจพ เจธเจฎเจพเจ เจ เจเจฟเจ เจนเฉเฅค เจ เจฐเจฅเจพเจค, เจ เจธเฉเจ เจชเจพเจเจฅเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจเฉ เจตเฉเจฌเจธเจพเจเจ (เจธเจฐเจตเจฐ) เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจ เจเฉ เจเฉเจเจธเจ เจฆเฉ เจเฉฑเจ เจเฉเจเฉเฉ เจจเจพเจฒ เจเฉฑเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจเจเจเจชเฉเฉฑเจ เจเจฐ เจธเจเจฆเจพ เจนเฉ. เจเจน เจซเจพเจเจฒ เจธเจฐเจตเจฐ เจคเฉเจ เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ (เจเจฒเจพเจเฉฐเจ) เจฆเฉเจเจฐเจพ เจฎเฉฐเจเฉ เจเจ เจนเฉ, เจเฉ เจชเจพเจเจฅเจจ เจตเจฟเฉฑเจ เจตเฉ เจฒเจฟเจเฉ เจเจ เจนเฉเฅค เจธเจฐเจตเจฐ เจคเฉเจ เจเฉฑเจ เจซเจพเจเจฒ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจชเฉเจฐเฉเจเจฐเจพเจฎ เจธเจเฉเจฐเฉเจจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจเฉเจเจธเจ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเจพ เจนเฉ.
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจจเฉเจ เจเจฐเฉ เจเจฟ เจ เจธเฉเจ เจเจน เจฎเฉฐเจจ เจฐเจนเฉ เจนเจพเจ เจเจฟ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจกเฉเจเจฐ เจฆเฉเจเจ เจฎเฉเจฒ เจเฉฑเจฒเจพเจ เจนเจจ เจ เจคเฉ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจกเฉเจเจฐ เจชเจฒเฉเจเจซเจพเจฐเจฎ เจธเจฅเจพเจชเจค เจนเฉเฅค
เจเจ เจชเฉเจฐเฉเจเฉเจเจ 'เจคเฉ เจเฉฐเจฎ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจเฅค
โ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
เจเจพเจนเจ เจฆเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจจ เจฒเจ. เจเจธ เจฒเจ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจชเจคเฉ 'เจคเฉ เจเจพเจเจฆเฉ เจนเฉ 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