เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ Docker Compose

เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก, เบเบฒเบ™เปเบ›เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบœเบตเบเปเบœเปˆเปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เบšเบญเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰ Docker Compose เปเบฅเบฐเบเปเบฒเบฅเบฑเบ‡เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบŠเบตเบŸเป€เบงเบตเบฅเบนเบเบ„เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเปƒเบŠเป‰ Docker. เบกเบฑเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบœเบนเป‰เบญเปˆเบฒเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Docker. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบต, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบšเบดเปˆเบ‡ เบ™เบตเป‰ เบŠเบธเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบชเบฐเบ”เบธเบเปˆเบฝเบงเบเบฑเบš เบ™เบตเป‰ เป‚เบžเบ”เบเบงเบกเป€เบญเบปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™ Docker เบžเป‰เบญเบกเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™ Kubernetes, เปเบฅเบฐ เบ™เบตเป‰ เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบœเบนเป‰โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹.

เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ Docker Compose

Docker Compose เปเบกเปˆเบ™เบซเบเบฑเบ‡?

Docker Compose เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบฅเบงเบกเบขเบนเปˆเปƒเบ™ Docker. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบเบฒเบ™.

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฝเบ™เบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Docker, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบš, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบซเบฒเบเบฒเบ. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™.

เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เป„เบ”เป‰เปเบ™เบงเปƒเบ”เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Docker Compose เป€เบกเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เป‚เบ„เบ‡เบเบฒเบ™? เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบซเบผเบฒเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Docker Compose เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเป‰เบฒเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบœเบนเป‰เปƒเบŠเป‰. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบชเบญเบ‡โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™ - เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบงเบฑเบšโ€‹เป„เบŠโ€‹เป„เบ”เป‰โ€‹, เปเบฅเบฐโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบฎเบฑเบšโ€‹เบœเบดเบ”โ€‹เบŠเบญเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹.

เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต Docker Compose, เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบกเบฑเบ™เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบง.

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ Docker เปเบฅเบฐ Docker Compose

Docker เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบˆเบธเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™ (เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™) เบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

Docker Compose เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบžเป‰เบญเบกเบเบฑเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบผเบฒเบเบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Docker, เปเบ•เปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ.

เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ Docker Compose
Docker (เบ–เบฑเบ‡เบ”เบฝเบง) เปเบฅเบฐ Docker Compose (เบซเบผเบฒเบเบšเบฑเบ™เบˆเบธ)

เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบš Docker Compose

Docker Compose เปเบกเปˆเบ™, เปƒเบ™เบกเบทเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡ Docker Compose, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบเบฒเบ™เปƒเบŠเป‰ Docker Compose เบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™.

เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เป€เบงเบฑเบš. เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบชเบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เบ—เปเบฒเบญเบดเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เบฑเบเบ—เบธเบฅเบฐเบเบดเบ”เบชเป‰เบฒเบ‡เบฎเป‰เบฒเบ™เบ„เป‰เบฒเบญเบญเบ™เป„เบฅเบ™เปŒเบ”เป‰เบงเบเบเบฒเบ™เบ„เบฅเบดเบเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบ„เบฑเป‰เบ‡. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เปเบ™เปƒเบชเปˆเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบนเบเบ„เป‰เบฒ. เบ—เบฑเบ‡เบชเบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบเบฒเบโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบดโ€‹เบเบปเบกโ€‹เบซเบผเบฒเบโ€‹เบ‚เบถเป‰เบ™โ€‹, เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เบซเบฑเบ™โ€‹เบญเบญเบโ€‹เบงเปˆเบฒโ€‹เบžเบฐโ€‹เบฅเบฑเบ‡โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เปเบกเปˆโ€‹เบ‚เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เปเบฅเปˆเบ™โ€‹เปเบกเปˆเบ™โ€‹เบšเปเปˆโ€‹เบžเบฝเบ‡โ€‹เบžเปโ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบญเบตเบโ€‹เปเบฅเป‰เบงโ€‹. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเป‰เบฒเบเป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เบญเบทเปˆเบ™.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™ Docker Compose. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป‚เบญเบ™เปเบฅเบฐ configure เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡, เบซเบงเบฑเบ‡เบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบฅเบทเบกเบซเบเบฑเบ‡เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Docker Compose, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบซเบกเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบชเบฑเปˆเบ‡. เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป‚เบญเบ™เป‚เบ„เบ‡เบเบฒเบ™เป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบซเบกเปˆ, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบšเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบชเปเบฒเป€เบ™เบปเบฒเบชเปเบฒเบฎเบญเบ‡เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบซเบกเปˆ.

เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเป‚เบ”เบเปƒเบŠเป‰ Docker Compose

เบ•เบญเบ™เบ™เบตเป‰เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ Docker Compose เบชเปเบฒเบฅเบฑเบšเบซเบเบฑเบ‡, เบกเบฑเบ™เปเบกเปˆเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบŠเบตเบŸเป€เบงเบตเบฅเบนเบเบ„เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰. เบ„เบท, เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ (เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ) เปƒเบ™ Python เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบญเบญเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก. เป„เบŸเบฅเปŒเบ™เบตเป‰เบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ (เบฅเบนเบเบ„เป‰เบฒ), เบ‚เบฝเบ™เปƒเบ™ Python. เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบ”เป‰เบฎเบฑเบšเป„เบŸเบฅเปŒเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เป‚เบ„เบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบกเบฑเบ™เปƒเบ™เบซเบ™เป‰เบฒเบˆเป.

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš Docker เปเบฅเบฐเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเป€เบงเบ—เบต Docker เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเป‰เบง.

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™.

โ–1. เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบฅเบนเบเบ„เป‰เบฒ / เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบŸเป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™. เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบกเบตเป„เบŸเบฅเปŒ เปเบฅเบฐเป‚เบŸเบ™เป€เบ”เบตเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป€เบญเบเบฐเบชเบฒเบ™ docker-compose.yml. เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒ Docker Compose เบ—เบตเปˆเบˆเบฐเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.
  • เปเบŸเป‰เบก server. เบกเบฑเบ™เบˆเบฐเบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบฎเบฑเบ”เบงเบฝเบ.
  • เปเบŸเป‰เบก client. เป„เบŸเบฅเปŒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบ•เบฑเป‰เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป‚เบŸเบ™เป€เบ”เบตเบซเบผเบฑเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

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

โ–2. เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ

เบ—เบตเปˆเบ™เบตเป‰, เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเปเบฒเบœเบฑเบ”เบเบฑเบšเบšเบฒเบ‡เบชเบดเปˆเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš Docker.

2 เบ. เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ

เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต server เปเบฅเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบกเบฑเบ™:

  • เป€เบญเบเบฐเบชเบฒเบ™ server.py. เบกเบฑเบ™เบˆเบฐเบกเบตเบฅเบฐเบซเบฑเบ”เป€เบŠเบตเบŸเป€เบงเบต.
  • เป€เบญเบเบฐเบชเบฒเบ™ index.html. เป„เบŸเบฅเปŒเบ™เบตเป‰เบˆเบฐเบกเบตเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบฅเบนเบเบ„เป‰เบฒเบ„เบงเบ™เบชเบปเปˆเบ‡เบญเบญเบ.
  • เป€เบญเบเบฐเบชเบฒเบ™ Dockerfile. เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒ Docker เบ—เบตเปˆเบˆเบฐเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป‚เบŸเบ™เป€เบ”เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ„เบท server/:

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

2 เบ‚. เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ Python.

เป€เบžเบตเปˆเบกเปƒเบชเปˆเป„เบŸเบฅเปŒ 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, เป€เบ™เบทเป‰เบญเปƒเบ™เบ—เบตเปˆเบ•เปเปˆเบกเบฒเบˆเบฐเบ–เบทเบเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเป€เบงเบฑเบš.

2 เบ„. เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ HTML

เป€เบžเบทเปˆเบญเบเบทเปˆเบ™ index.html เป€เบžเบตเปˆเบกเบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

Docker-Compose is magic!

เบ‚เปเป‰เบ„เบงเบฒเบกเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบฅเบนเบเบ„เป‰เบฒ.

2 เบ‡. เบเบฒเบ™เปเบเป‰เป„เบ‚ Dockerfile

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ‡เปˆเบฒเบเบ”เบฒเบ Dockerfile, เบœเบนเป‰เบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก runtime เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Python. เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰ เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฒเบ‡เบเบฒเบ™, เบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ 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. เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบนเบเบ„เป‰เบฒ

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเป‰เบฒเบ‡เบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบˆเบทเปˆเบˆเปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™ Docker เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ•เบฒเบกเบ—เบฒเบ‡.

3 เบ. เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ

เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ client เปเบฅเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบกเบฑเบ™:

  • เป€เบญเบเบฐเบชเบฒเบ™ client.py. เบฅเบฐเบซเบฑเบ”เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเบ•เบฑเป‰เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.
  • เป€เบญเบเบฐเบชเบฒเบ™ Dockerfile. เป„เบŸเบฅเปŒเบ™เบตเป‰เบกเบตเบšเบปเบ”เบšเบฒเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเป€เบŠเบตเบŸเป€เบงเบต. เบ„เบท, เบกเบฑเบ™เบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบฅเบนเบเบ„เป‰เบฒ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบŸเบ™เป€เบ”เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ client/ เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

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

3 เบ‚. เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ Python

เป€เบžเบตเปˆเบกเปƒเบชเปˆเป„เบŸเบฅเปŒ 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()

เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบฅเบนเบเบ„เป‰เบฒเบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบชเบฐเปเบ”เบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบˆเป.

3 เบ„. เบเบฒเบ™เปเบเป‰เป„เบ‚ Dockerfile

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบ Dockerfile, เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบฅเบนเบเบ„เป‰เบฒ Python เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบฅเบนเบเบ„เป‰เบฒ Dockerfile:

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

FROM python:latest

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

ADD client.py /client/

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

WORKDIR /client/

โ–4. Docker เบ‚เบฝเบ™

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒ. เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบกเบตเป„เบŸเบฅเปŒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡ Dockerfile. เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบšเปเปˆเป„เบ”เป‰เป„เบ›เบ™เบญเบเป€เบซเบ™เบทเบญเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Docker. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ Docker Compose. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเป„เบŸเบฅเปŒ docker-compose.yml, เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป‚เบŸเป€เบ”เบตเบฎเบฒเบเป‚เบ„เบ‡เบเบฒเบ™.

เบเบฐโ€‹เบฅเบธโ€‹เบ™เบฒโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบงเปˆเบฒโ€‹เปƒเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบเบงเบกโ€‹เป€เบญเบปเบฒโ€‹เบขเปˆเบฒเบ‡โ€‹เปเบ—เป‰โ€‹เบˆเบดเบ‡โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™ docker-compose.yml. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบเปˆเบฒเบ‡เบœเปˆเบฒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบˆเบฐเปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Docker Compose.

เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเปƒเบชเปˆเปƒเบ™เป„เบŸเบฅเปŒ 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

เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰, เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเบ”เบฒเบงเป‚เบซเบผเบ”เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ„เบงเบ™เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ terminal: Docker-Compose is magic!.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบง, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบŠเป‰เบžเบญเบ”เบ„เบญเบกเบžเบดเบงเป€เบ•เบต 1234 เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ‚เบญเบ‡โ€‹เบฅเบนเบโ€‹เบ„เป‰เบฒโ€‹. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™ http://localhost:1234/, เบกเบฑเบ™เบˆเบฐเบชเบฐเปเบ”เบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบก Docker-Compose is magic!.

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบšเบฒเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Docker Compose.

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบขเบธเบ”เปเบฅเบฐเบฅเบถเบš containers เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ docker-compose up:

$ docker-compose down

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบžเบดเบกเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™:

$ docker-compose logs -f [service name]

เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ™เบตเป‰: $ docker-compose logs -f [service name].

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธ:

$ docker-compose ps

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™ container เปเบฅเปˆเบ™:

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

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰: docker-compose exec server ls.

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš:

$ docker-compose images

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ—เบเป‚เบ™เป‚เบฅเบเบต Docker Compose, เบ„เบงเบฒเบกเบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ™เบตเป‰เปเบฅเบฐ, เบ–เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเบถเบเบชเบฒเบกเบฑเบ™เปƒเบ™เบ„เบงเบฒเบกเป€เบฅเบดเบเบ•เบทเปˆเบกเบญเบตเบ. เบ—เบตเปˆเบ™เบตเป‰ repository เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.

เบ—เปˆเบฒเบ™เบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡! เป€เบˆเบปเป‰เบฒเปƒเบŠเป‰ Docker Compose เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบšเป?

เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ Docker Compose

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™