α’ααααα·ααααα’ααααααααααΆααΆααααααααααααΎααααα»αααααα»αααααααααααα·ααΆαααΆααΆααααΌαααΆαααααα»ααα»ααααααΆααα’αααα’αα·αααααααααα
ααααα 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 αααααΆαααααΆααααααΌαααααααααααα’ααααα αααΆαααΈαααααααΈααΊααΆαααα αΆαααα’αΆα αααααααΆαααΆααααααΆαααααΎαααΆαααΆααααααααΆαα½αα ααα½αα ααΎααααΈαααα ααααΆαααααααααααααα ααΈααΆααααααΈ α’αααααααΆααααααααΌαααααΎααΆαααααααα½αα ααα½α α αΎααααα ααα αααΆααα ααααααααα»ααα»αααααΌαααααΆααα·αααααααα ααΆαααααΆαααΈαααααααΈα
αααααΎααααααα·ααΈ client-server αααααααΎ Docker Compose
α₯α‘αΌααααα’αααααΉαααΈα’αααΈαααααΎαααΉαααααΎ Docker Compose αααααΆαα ααΆααΆαααααααΆααΎααααΈαααααΎααααααα·ααΈαααΆαααΈααααααααααΌαααααα’ααααααααααΎα§ααααααααα ααΆααααααΆ ααΎααααα»ααα·ααΆαα’αααΈααΆααααααΎαααα αααααααΌα αα½α (αααΆαααΈααα) αα αααα»α Python αααα’αΆα αααα ααα―αααΆαααΆαα½αααΉααααααααα’αααααα α―αααΆααααααααΌαααΆαααααΎααα»αααΈαααΆαααΈαααααααααααα·ααΈ (α’αα·αα·αα) αααααΆαααααααα αααα»α Python αααααα αααααΆααααΈααα½αααΆαα―αααΆαααΈαααΆαααΈααα αααααα·ααΈαααα αΆαα’αααααααααααααΆαα»ααααα»αααΆαα ααΎα’ααααααα
ααΌαα αααΆαααΆααΎαααααααααΆα’αααααΆαααΆααααααΉαααΆααΌαααααΆαα’αααΈ Docker α αΎαααΆα’αααααΆαααα‘αΎααααα·ααΆ Docker αα½α α αΎαα
αααα αΆααααααΎαααααΎααΆαααΎααααααα
β α‘. ααΆααααααΎααααααα
ααΎααααΈαααααΎααααααα·ααΈαααΆαααΈαααααα-αααΆαααΈαααααααΌαααααα’ααα αααα»αααααΎα±ααα’αααα αΆααααααΎαααααααααΎαααααααααα ααΆαα½αααααΆαα―αααΆα αα·αααα―αααΆαααΆααααααα
- α―αααΆα
docker-compose.yml
. αααααΊααΆα―αααΆα Docker Compose αααααΉαααΆαααΆαααααΆααααααααΌαααΆαααΎααααΈα αΆααααααΎα αα·αααααααα ααΆααααααααααααΆααααα - ααα―αααΆα
server
. ααΆααΉαααΆαα―αααΆαα αΆαααΆα αααΎααααΈαααααΆαααΆαααΈαααα±ααααααΎαααΆαα - ααα―αααΆα
client
. α―αααΆααααααα·ααΈα’αα·αα·ααααΉαααΆαααΈααΆαααα ααΈαααα
ααΆαααααα ααααΉαααΆαααααα―αααΆαααααΆααααααααααααααααα’ααααα½αααααΎααα ααΌα αααα
.
βββ client/
βββ docker-compose.yml
βββ server/
2 directories, 1 file
β α’. ααΆααααααΎααααΆαααΈααα
αα ααΈααα αα αααα»αααααΎαααΆαααααΆααααααΎααααΆαααΈααα ααΎαααΉααααααΎα ααα»α ααΌαααααΆααα½αα ααα½αααΆααααααΉα 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 αα ααΆαααααααα½αα―αααΆα Docker
α₯α‘αΌααααααΎαααΉααααααΎαα―αααΆαααΆαααα 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/
α₯α‘αΌααααααΌαα αΆααααααΎαααααΎααΆαααΎα’αα·αα·ααα
β α£. ααΆααααααΎαα’αα·αα·αα
ααααααααααααααΎααααααα’αα·αα·ααααααααααααααααΎα ααΎαααΉαα αα αΆαααΈααΌαααααΆα 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()
ααΆαα½αααΉααααααΌαααα αααααα·ααΈα’αα·αα·ααα’αΆα ααΆααααα·ααααααααΈαααΆαααΈααα α αΎααααα αΆαααΆαα ααΎα’ααααααα
α£ α. ααΆαααααααα½αα―αααΆα Docker
ααΌα
αα
αααα»αααααΈαααααΆαααΈαααααΎααααααΎαααΆαααααα½αα Dockerfile
ααα½ααα»αααααΌαα
ααααααΆααααααΎαααα·ααααΆαααααααααα·ααΈαααΆαααΈαααααα Python ααΉαααααΎαααΆαα αααααΊααΆαααααΌαα’αα·αα·αα Dockerfile
:
# Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌ Dockerfile.
FROM python:latest
# ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ 'client.py' Π² ΠΏΠ°ΠΏΠΊΡ '/client/'.
ADD client.py /client/
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ '/client/'.
WORKDIR /client/
β α€. 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
β α₯. ααΆααααΆααααααα
αααααΆααααΈα
αΌα docker-compose.yml
ααΆαααααΆαα
αΆαααΆα
αααΆααα’ααααααΌαααΆααααα
αΌα ααααααα
αΆαααΆα
αααααΌααααααΌααααα»αα ααα αΆαααααΆαααΆαααααααΎααααααΊααααααααΉαααΆαααααΎααΆααααααααΆ docker build
ααα»ααααααΆααααααααΆαααααααΌαααααΆααΊααΆαααααααααΉαααααΆααααααΆα
αααΎαα
$ docker-compose build
β α¦. ααΆαα αΆααααααΎααααααααα
α₯α‘αΌαβαααβααααααβαααβααααΌαβααΆαβαααααΌαβαααα»αβα αΎα ααΆβαααβαααβα
αΆααβααααΎαβααΆβα αΎαα ααα αΆαααααΆαααΆαααααααΎααααααααΌαααααΆαα
ααΉαααα αΆαααααα
αααααααΎααΆαααΆαα½ααα»αααΈαα½αα ααΆααααααααΆααααΌαααΆαααααα·ααααα· 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