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. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ˜แƒ› แƒ˜แƒ›แƒ”แƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒแƒ› แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ‘แƒแƒ—.

แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Docker Compose-แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒฎแƒแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ“แƒ”แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒ—. แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒฎแƒแƒš แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒ˜แƒก แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒแƒฎแƒแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ™แƒšแƒ˜แƒ”แƒœแƒข-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ Docker Compose-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒแƒฎแƒšแƒ, แƒ แƒแƒชแƒ แƒ˜แƒชแƒ˜แƒ—, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Docker Compose-แƒก, แƒ“แƒ แƒแƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜/แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒแƒ› แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒกแƒแƒฃแƒ‘แƒแƒ แƒ˜แƒ แƒžแƒ˜แƒ—แƒแƒœแƒจแƒ˜ แƒžแƒแƒขแƒแƒ แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒก (แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก) แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜แƒ— แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ. แƒ”แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ แƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ‘แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก (แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก) แƒ›แƒ˜แƒ”แƒ , แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒจแƒ˜. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒแƒกแƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒš แƒขแƒ”แƒฅแƒกแƒขแƒก.

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ•แƒแƒ แƒแƒฃแƒ“แƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— 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แƒ‘. แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ.

แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ server.py แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ™แƒแƒ“แƒ˜:

#!/usr/bin/env python3

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

import http.server
import socketserver

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

handler = http.server.SimpleHTTPRequestHandler

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

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

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

   httpd.serve_forever()

แƒ”แƒก แƒ™แƒแƒ“แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜. แƒ˜แƒก แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒคแƒแƒ˜แƒšแƒก index.html, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ•แƒ”แƒ‘ แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ”.

2c. HTML แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

แฒจแƒ”แƒ˜แƒขแƒแƒœแƒแƒก index.html แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜:

Docker-Compose is magic!

แƒ”แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒ’แƒแƒ”แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก.

2d. Dockerfile-แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒคแƒแƒ˜แƒšแƒก Dockerfile, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ 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แƒ‘. แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ

แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ 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, แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช Python แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ Dockerfile:

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

FROM python:latest

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

ADD client.py /client/

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

WORKDIR /client/

โ–4. Docker Compose

แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ—แƒ’แƒแƒœแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ Dockerfile. แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ—, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒช แƒฎแƒ“แƒ”แƒ‘แƒ, แƒแƒ  แƒกแƒชแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ Docker-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒก. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ— Docker Compose-แƒ—แƒแƒœ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ— แƒคแƒแƒ˜แƒšแƒก docker-compose.ymlแƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก root แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜.

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ–แƒœแƒแƒ“ แƒแƒ  แƒ›แƒ˜แƒ•แƒ˜แƒฉแƒœแƒ”แƒ•แƒ— แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒแƒ“ แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒ› แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒช แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ 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

แƒแƒ› แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒก แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜: Docker-Compose is magic!.

แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒ™แƒ•แƒ” แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”แƒ—, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒžแƒแƒ แƒขแƒก 1234 แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ—แƒฃ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒจแƒ˜ แƒ›แƒ˜แƒ“แƒ˜แƒฎแƒแƒ  แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ” http://localhost:1234/, แƒ˜แƒก แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒ— Docker-Compose is magic!.

แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ’แƒแƒ“แƒ’แƒ”แƒ‘แƒแƒ— Docker Compose-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก.

แƒ”แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒแƒฉแƒ”แƒ แƒแƒ— แƒ“แƒ แƒฌแƒแƒจแƒแƒšแƒแƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜ 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

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— Docker Compose แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒชแƒแƒ“แƒœแƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ แƒ“แƒ แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— แƒฃแƒคแƒ แƒ แƒฆแƒ แƒ›แƒแƒ“ แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒแƒฅ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฅ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ—.

แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒก! แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Docker Compose-แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜?

Docker Compose แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ—แƒแƒ—แƒ•แƒ˜แƒก

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ