แกแขแแขแแแก แแแขแแ แ, แ แแแแแกแแช แแฆแแก แแแฅแแแงแแแแ, แแแแแแก, แ แแ แแก แแแแแฃแแแแแแแ แแ แแแแแแแแแ แแแแกแแแแก, แ แแแแแแกแแช แกแฃแ แ Docker Compose-แแก แกแฌแแแแ แแ แแแแ แแแแ แจแแฅแแแแ แแแแแแแแ แแแ แแแแ แแแแแแข-แกแแ แแแ แแก แแแแแแแชแแ Docker-แแก แแแแแงแแแแแแ. แแแ แแฃแแแแแ, แ แแ แแ แแแกแแแแก แแแแแฎแแแแ แแชแแแแก Docker-แแก แกแแคแฃแซแแแแแก. แแฃ แแก แแกแ แแ แแ แแก, แจแแแแซแแแแ แแแแแฎแแแแ
แ แ แแ แแก Docker Compose?
Docker Compose แแ แแก แแแกแขแ แฃแแแแขแ, แ แแแแแแช แจแแแแก Docker-แจแ. แแแ แจแแฅแแแแแแ แแ แแแฅแขแแแแก แแแแฎแแ แชแแแแแแแกแแแ แแแแแแจแแ แแแฃแแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ.
Docker-แแก แกแแคแฃแซแแแแแแก แจแแกแฌแแแแแกแแก, แจแแกแแซแแแ แจแแแฎแแแแ แแ แฃแแแ แขแแแแกแ แแแแแแแชแแแแแก แจแแฅแแแ, แ แแแแแแแช แแฃแจแแแแแ แแแแแฃแแแแแแแแ, แแ แแ แแแ แแแแแแแแแแฃแแ, แแแแแแแแแ, แแแแแชแแแแ แแแ แ แฌแงแแ แแแแแ แแ แแแ แแแแฃแ แกแแ แแแกแแแแ. แแ แแฅแขแแแแจแ, แแกแแแ แแแแแแแชแแแแ แแจแแแแแแ. แ แแแแฃแ แ แแ แแแฅแขแแแ แฉแแแฃแแแแ แแ แแแแชแแแก แแ แแแแแแแ แแแแแแแชแแแแแก แแแแ แแแแแแแฅแขแก.
แ แแแแ แแชแแ, แแญแแ แแแแแ แแฃ แแ แ Docker Compose-แแก แแแแแงแแแแแ แแ แแแฅแขแแก แแแแแแแแแแกแแก? แกแแแแแแแแแแจแ, แแก แซแแแแแ แแแ แขแแแแ. แแฃ แแ แแ แแแฅแขแแก แแแกแแจแแแแแ แแงแแแแแ แแ แแแแ แกแแ แแแกแก, แแแจแแ Docker Compose แจแแแซแแแแ แแแแแแแแแแแแ. แแแแแแแแแ, แกแแขแฃแแชแแแจแ, แ แแแแกแแช แแฅแแแ แฅแแแแ แแแแกแแแขแก, แ แแแแแแช แแแแฎแแแ แแแแแก แแแขแแ แแแแชแแแก แจแแกแแกแ แฃแแแแแแ แกแแญแแ แแ แแแแแชแแแแ แแแแแกแแแ แแแแแแจแแ แแแ. แแกแแแ แแ แแแฅแขแ แจแแแซแแแแ แจแแแแแแแแแก แแ แ แกแแ แแแกแแกแแแ - แแ แแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แกแแแขแแก แแฃแจแแแแแก แแ แแ แแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแแแแชแแแแ แแแแแก แแฎแแ แแแญแแ แแแ.
Docker Compose แขแแฅแแแแแแแ, แแฃ แแแก แแแแแ แขแแแแแฃแแแ แแฆแฌแแ แ, แกแแจแฃแแแแแแก แแแซแแแแ แแแแฌแงแแ แแ แแแแแ แกแแ แแแกแ แแ แแ แแ แซแแแแแแ.
แแแแกแฎแแแแแแ Docker-แกแ แแ Docker Compose-แก แจแแ แแก
Docker แแแแแแงแแแแแ แแแแแแแแฃแแแฃแ แ แแแแขแแแแแ แแแแก (แกแแ แแแกแแแแก) แกแแแแ แแแแแ, แ แแแแแแแช แฅแแแแแ แแแแแแแชแแแก.
Docker Compose แแแแแแงแแแแแ แแ แแแแแ แแแแขแแแแแ แแก แกแแแแ แแแแแ, แ แแแแแแแช แแ แแแ แแฃแแแ แแแแแแแชแแแก แแแฌแแแแ. แแก แแแกแขแ แฃแแแแขแ แแแแแแแแแ แแแแแ แคแฃแแฅแชแแแแก, แ แแแแ แช Docker, แแแแ แแ แแแซแแแแ แกแแจแฃแแแแแแก แแแฃแจแแแ แฃแคแ แ แ แแฃแ แแแแแแแชแแแแแแ.
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 ะฒัะตะณะดะฐ ะดะพะปะถะตะฝ ะฝะฐัะธะฝะฐัััั ั ะธะผะฟะพััะฐ ะฑะฐะทะพะฒะพะณะพ ะพะฑัะฐะทะฐ.
# ะะปั ััะพะณะพ ะธัะฟะพะปัะทัะตััั ะบะปััะตะฒะพะต ัะปะพะฒะพ '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
แแแแฎแแแ แแแแแแ แแแแฎแแแแแแแก แแแกแแแแแงแแคแแแแแแแ. แแแแขแแ, แแฃ แแ แแฃแแแ แจแ แแแแแฎแแ แแแกแแแแ แแแ 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-แก แแฅแแแแก แแ แแแฅแขแแแจแ?
แฌแงแแ แ: www.habr.com