เชฒเซเชเชจเชพ เชฒเซเชเช, เชเซเชจเซ เช
เชจเซเชตเชพเชฆ เช
เชฎเซ เชเชเซ เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช, เชคเซ เชเชนเซ เชเซ เชเซ เชคเซ เชเชตเชพ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฎเชพเชเซ เชฌเชจเชพเชตเชพเชฏเซเชฒ เชเซ เชเซเช เชกเซเชเชฐ เชเชเชชเซเช เชถเซเชเชตเชพ เชฎเชพเชเชเซ เชเซ เช
เชจเซ เชกเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชฎเชจเซ เชชเซเชฐเชฅเชฎ เชเซเชฒเชพเชฏเชเช-เชธเชฐเซเชตเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเชตเชพ เชคเชฐเชซ เชเชเชณ เชตเชงเซ เชฐเชนเซเชฏเชพ เชเซ. เชเชตเซเช เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซ เช เชธเชพเชฎเชเซเชฐเซเชจเซ เชตเชพเชเช เชกเซเชเชฐเชจเซ เชฎเซเชณเชญเซเชค เชฌเชพเชฌเชคเซเชฅเซ เชชเชฐเชฟเชเชฟเชค เชเซ. เชเซ เช เชเชฟเชธเซเชธเซ เชจเชฅเซ, เชคเซ เชคเชฎเซ เชเช เชจเชเชฐ เชเชฐเซ เชถเชเซ เชเซ
เชกเซเชเชฐ เชเชฎเซเชชเซเช เชถเซเช เชเซ?
เชกเซเชเชฐ เชเชเชชเซเช เช เชกเซเชเชฐ เชธเชพเชฅเซ เชธเชฎเชพเชฏเซเชฒ เชธเชพเชงเชจ เชเซ. เชคเซ เชชเซเชฐเซเชเซเชเซเช เชเชฎเชพเชตเช เชธเชเชฌเชเชงเชฟเชค เชธเชฎเชธเซเชฏเชพเช เชเชเซเชฒเชตเชพ เชฎเชพเชเซ เชฐเชเชพเชฏเซเชฒ เชเซ.
เชกเซเชเชฐเชจเซ เชฎเซเชณเชญเซเชค เชฌเชพเชฌเชคเซ เชถเซเชเชคเซ เชตเชเชคเซ, เชคเชฎเซ เชเชฆเชพเช เชธเชฐเชณ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชธเชพเชฎเชจเซ เชเชฐเซเชฏเซ เชนเชถเซ เชเซ เชธเซเชตเชพเชฏเชคเซเชค เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ เช เชจเซ เชจเชฟเชฐเซเชญเชฐ เชจเชฅเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฌเชพเชนเซเชฏ เชกเซเชเชพ เชธเซเชฐเซเชคเซ เชชเชฐ เช เชฅเชตเชพ เช เชฎเซเช เชธเซเชตเชพเช เชชเชฐ. เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช, เชเชตเซ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชฆเซเชฐเซเชฒเชญ เชเซ. เชตเชพเชธเซเชคเชตเชฟเช เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชเชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชคเซ เชเชชเซเชฒเชฟเชเซเชถเชจเซเชจเซ เชธเชเชชเซเชฐเซเชฃ เชธเซเช เชธเชพเชฎเซเชฒ เชนเซเชฏ เชเซ.
เชคเชฎเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฃเซ เชเซ เชเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชเชฎเชพเชตเชคเซ เชตเชเชคเซ เชกเซเชเชฐ เชเชฎเซเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ? เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช เชเซเชฌ เช เชธเชฐเชณ เชเซ. เชเซ เชคเชฎเซ เช เชชเซเชฐเซเชเซเชเซเชเชจเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชฌเชนเซเชตเชฟเชง เชธเซเชตเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชคเซ เชชเชเซ Docker Compose เชเชพเชฎเชฎเชพเช เชเชตเซ เชถเชเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช เชเซเชฏเชพเช เชคเซเช เชเชตเซ เชตเซเชฌเชธเชพเชเช เชฌเชจเชพเชตเซ เชเซ เชเซเชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ เชเชจเซเชเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเชตเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชฌเซ เชธเซเชตเชพเช เชถเชพเชฎเซเชฒ เชนเซเช เชถเชเซ เชเซ - เชเช เชเซ เชเซ เชธเชพเชเชเชจเชพ เชธเชเชเชพเชฒเชจเชจเซ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเซ เชเซ, เช เชจเซ เชเช เชเซ เชเซ เชกเซเชเชพเชฌเซเชเชจเซ เชเชพเชณเชตเชฃเซ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ.
เชกเซเชเชฐ เชเชฎเซเชชเซเช เชเซเชเซเชจเซเชฒเซเชเซ, เชคเซเชจเซ เชธเชฐเชณ เชฐเซเชคเซ เชตเชฐเซเชฃเชตเชตเชพ เชฎเชพเชเซ, เชคเชฎเชจเซ เชเช เชเชฆเซเชถ เชธเชพเชฅเซ เชเชฃเซ เชธเซเชตเชพเช เชถเชฐเซ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชกเซเชเชฐ เช เชจเซ เชกเซเชเชฐ เชเชเชชเซเช เชตเชเซเชเซเชจเซ เชคเชซเชพเชตเชค
เชกเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซ เชเซ เชคเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชเชจเซเชเซเชจเชฐ (เชธเซเชตเชพเช) เชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ.
เชกเซเชเชฐ เชเชเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซ เชเซ เชคเซ เชเช เชธเชพเชฅเซ เชฌเชนเซเชตเชฟเชง เชเชจเซเชเซเชจเชฐเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ. เช เชธเชพเชงเชจ เชกเซเชเชฐ เชเซเชตเซ เช เชเซเชทเชฎเชคเชพเช เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ, เชชเชฐเชเชคเซ เชคเชฎเชจเซ เชตเชงเซ เชเชเชฟเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชกเซเชเชฐ (เชธเชฟเชเชเชฒ เชเชจเซเชเซเชจเชฐ) เช
เชจเซ เชกเซเชเชฐ เชเชเชชเซเช (เชฌเชนเซเชตเชฟเชง เชเชจเซเชเซเชจเชฐ)
เชกเซเชเชฐ เชเชเชชเซเช เชฎเชพเชเซ เชฒเชพเชเซเชทเชฃเชฟเช เชเชชเชฏเซเช เชเซเชธ
เชกเซเชเชฐ เชเชเชชเซเช, เชเชฎเชฃเชพ เชนเชพเชฅเชฎเชพเช, เชเช เชเซเชฌ เช เชถเชเซเชคเชฟเชถเชพเชณเซ เชธเชพเชงเชจ เชเซ เชเซ เชคเชฎเชจเซ เชเชเชฟเชฒ เชเชฐเซเชเชฟเชเซเชเซเชเชฐเซเชธ เชธเชพเชฅเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเชฌ เช เชเชกเชชเชฅเซ เชเซเช เชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชนเชตเซ เช เชฎเซ เชกเซเชเชฐ เชเชฎเซเชชเซเชเชจเชพ เชตเซเชฏเชตเชนเชพเชฐเชฟเช เชเชชเชฏเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซเชเชถเซเช, เชเซเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เชคเชฎเชจเซ เชกเซเชเชฐ เชเชเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ เชคเชฎเชจเซ เชเซ เชฒเชพเชญเซ เชฎเชณเชถเซ เชคเซเชจเซเช เชฎเซเชฒเซเชฏเชพเชเชเชจ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเชถเซ.
เชเชฒเซเชชเชจเชพ เชเชฐเซ เชเซ เชคเชฎเซ เชตเซเชฌ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชกเซเชตเชฒเชชเชฐ เชเซ. เช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชฌเซ เชตเซเชฌเชธเชพเชเชเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ. เชชเซเชฐเชฅเชฎ, เชตเซเชฏเชตเชธเชพเชฏเชฟเช เชฒเซเชเซเชจเซ เชฎเชพเชคเซเชฐ เชฅเซเชกเชพ เชเซเชฒเชฟเชเซเชธ เชธเชพเชฅเซ เชเชจเชฒเชพเชเชจ เชธเซเชเซเชฐเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชฌเซเชเซ เชเซเชฐเชพเชนเช เชธเชชเซเชฐเซเชเชจเซ เชนเซเชคเซ เชเซ. เช เชฌเซ เชธเชพเชเชเซเชธ เชธเชฎเชพเชจ เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชฐเซ เชเซ.
เชคเชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชตเชงเซเชจเซ เชตเชงเซ เชฒเซเชเชชเซเชฐเชฟเชฏ เชฌเชจเซ เชฐเชนเซเชฏเซ เชเซ, เช เชจเซ เชคเซ เชคเชพเชฐเชฃ เชเชชเซ เชเซ เชเซ เชธเชฐเซเชตเชฐ เชเซ เชเซเชจเชพ เชชเชฐ เชคเซ เชเชพเชฒเซ เชเซ เชคเซเชจเซ เชถเชเซเชคเชฟ เชนเชตเซ เชชเซเชฐเชคเซ เชจเชฅเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เชคเชฎเซ เชธเชฎเชเซเชฐ เชชเซเชฐเซเชเซเชเซเชเชจเซ เช เชจเซเชฏ เชฎเชถเซเชจเชฎเชพเช เชเชธเซเชกเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซ เชเซ.
เชเชฎเชจเชธเซเชฌเซ, เชคเชฎเซ เชกเซเชเชฐ เชเชเชชเซเช เชเซเชตเซ เชเซเช เชตเชธเซเชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชจเชฅเซ. เชคเซเชฅเซ, เชคเชฎเชพเชฐเซ เชเช เชธเชฎเชฏเซ เชธเซเชตเชพเชเชจเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เช เชจเซ เชชเซเชจเชเชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชเชฐเชตเซ เชชเชกเชถเซ, เชเชถเชพ เชฐเชพเชเซเช เชเซ เชคเชฎเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชเชเชเชชเชฃ เชญเซเชฒเชถเซ เชจเชนเซเช.
เชเซ เชคเชฎเซ เชกเซเชเชฐ เชเชฎเซเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชคเซ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชจเชตเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เชเชธเซเชกเชตเซเช เช เชเช เชฌเชพเชฌเชค เชเซ เชเซ เชฅเซเชกเชพ เชเชฆเซเชถเซ เชเชฒเชพเชตเซเชจเซ เชเชเซเชฒเซ เชถเชเชพเชฏ เชเซ. เชจเชตเชพ เชธเซเชฅเชพเชจ เชชเชฐ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฃเชจเซ เชชเซเชฐเซเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชซเชเซเชค เชเซเชเชฒเซเช เชธเซเชเชฟเชเชเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซ เช เชจเซ เชจเชตเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เชกเซเชเชพเชฌเซเชเชจเซ เชฌเซเชเช เชช เชจเชเชฒ เช เชชเชฒเซเชก เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชกเซเชเชฐ เชเชฎเซเชชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฒเชพเชฏเชเช-เชธเชฐเซเชตเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจ เชตเชฟเชเชธเชพเชตเชตเซ
เชนเชตเซ เชคเชฎเซ เชเชพเชฃเซ เชเซ เชเซ เช เชฎเซ เชกเซเชเชฐ เชเชฎเซเชชเซเชเชจเซ เชเชชเชฏเซเช เชถเซเชจเชพ เชฎเชพเชเซ เชเชฐเชตเชพ เชเช เชฐเชนเซเชฏเชพ เชเซเช, เช เชเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฅเชฎ เชเซเชฒเชพเชฏเชเช-เชธเชฐเซเชตเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซ เชธเชฎเชฏ เชเซ. เชเชเชฒเซ เชเซ, เช เชฎเซ เชชเชพเชฏเชฅเซเชจเชฎเชพเช เชเช เชจเชพเชจเซ เชตเซเชฌเชธเชพเชเช (เชธเชฐเซเชตเชฐ) เชตเชฟเชเชธเชพเชตเชตเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชเซ เชเซเชเซเชธเซเชเชจเชพ เชเซเชเชกเชพ เชธเชพเชฅเซ เชซเชพเชเชฒเชจเซ เชเชเชเชชเซเช เชเชฐเซ เชถเชเซ เชเซ. เช เชซเชพเชเชฒเชจเซ เชธเชฐเซเชตเชฐเชฎเชพเชเชฅเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ (เชเซเชฒเชพเชฏเชจเซเช) เชฆเซเชตเชพเชฐเชพ เชตเชฟเชจเชเชคเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเซ เชชเชพเชฏเชฅเซเชจเชฎเชพเช เชชเชฃ เชฒเชเชพเชฏเซเชฒ เชเซ. เชธเชฐเซเชตเชฐเชฎเชพเชเชฅเซ เชซเชพเชเชฒ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเชพ เชชเชเซ, เชชเซเชฐเซเชเซเชฐเชพเชฎ เชธเซเชเซเชฐเซเชจ เชชเชฐ เชคเซเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชเซเชเซเชธเซเช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเซ เชเซ.
เชฎเชนเซเชฐเชฌเชพเชจเซ เชเชฐเซเชจเซ เชจเซเชเชง เชเชฐเซ เชเซ เช เชฎเซ เชงเชพเชฐเซเช เชเซเช เชเซ เชคเชฎเชจเซ เชกเซเชเชฐเชจเซ เชฎเซเชณเชญเซเชค เชธเชฎเช เชเซ เช เชจเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชนเซเชฒเซเชฅเซ เช เชกเซเชเชฐ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเซเช เชเซ.
เชเชพเชฒเซ เชชเซเชฐเซเชเซเชเซเช เชชเชฐ เชเชพเชฎ เชถเชฐเซ เชเชฐเซเช.
โ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
, เชเซ Python เชธเชฐเซเชตเชฐ เชฎเชพเชเซ เชฐเชจเชเชพเชเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเซเช เชตเชตเชพ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชนเชถเซ. เชฌเชจเชพเชตเซเชฒ เชเชฎเซเชเชจเชพ เชเชงเชพเชฐ เชคเชฐเซเชเซ, เช
เชฎเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช
# ะะฐ ะฒััะบะธะน ัะปััะฐะน ะฝะฐะฟะพะผะธะฝะฐั, ััะพ 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
, เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ เชเซเชฎเชพเช Python เชเซเชฒเชพเชฏเชจเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชพเชฒเชถเซ. เช
เชนเซเช เชเซเชฒเชพเชฏเชเช เชเซเชก เชเซ 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