Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ΠΠ°ΡΠΎ Docker? ΠΠ°ΠΊ Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°ΠΌΠ΅ Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ? Π ΠΊΠ°ΠΊ ΡΠΎΠ²Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½ΠΈ?
ΠΠΊΠΎ ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π»ΠΈ Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΈΠ³ΡΡΠ½ΠΎ ΡΡΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Π»ΠΈ, ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π½ΠΎ Π½Π΅ ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ»Π΅Π³Π°ΡΠ°. π€ ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°ΡΠΎ Π»ΠΈΠΏΡΠ²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Python ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ° ΡΠ΅ΡΡΠΈ.
Docker ΡΠ΅ΡΠ°Π²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΒ ΡΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ "ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ", ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ: ΠΊΠΎΠ΄, ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. π
β
Π Π°Π±ΠΎΡΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ β ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°.
β
ΠΠ΅ΡΠ½Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ΅ΠΌΠΎΡΡ β ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° ΠΊΠΎΠ»Π΅Π³ΠΈ Π±Π΅Π· Π΄Π° Π³ΠΈ ΠΊΠ°ΡΠ°ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π½Π΅ΡΠ°.
β
ΠΠ·ΠΎΠ»Π°ΡΠΈΡ β ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π΅ ΡΠΈ ΠΏΡΠ΅ΡΠ°Ρ Π΅Π΄Π½ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎ.
β
ΠΡΡΠ·ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ β ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ° ΠΏΠΎ-Π±ΡΡΠ·ΠΈ ΠΎΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅:
sudo apt install docker.io
)ΠΠ΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΠΎ Flask ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΠ° Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°:
mkdir python-docker-app && cd python-docker-app
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ»Β app.py
:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "ΠΠ΄ΡΠ°Π²Π΅ΠΉ, Docker! π³"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅Β requirements.txt
Β (ΡΡΠΊ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅):
flask==2.0.1
Dockerfile Π΅ ΡΠ΅ΡΠ΅ΠΏΡΠ°ΡΠ° Π·Π° Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. Π’ΠΎΠΉ ΠΎΠΏΠΈΡΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠ³Π»ΠΎΠ±ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡ.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Dockerfile
(Π±Π΅Π· ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅) ΡΡΡ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
# ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ Python ΠΎΠ±ΡΠ°Π· ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° FROM python:3.9-slim # ΠΠ°Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ WORKDIR /app # ΠΠΎΠΏΠΈΡΠ°ΠΌΠ΅ requirements.txt ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # ΠΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ COPY . . # Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ CMD ["python", "app.py"]
FROM python:3.9-slim
Β β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π»Π΅ΠΊ Python ΠΎΠ±ΡΠ°Π· (Π±Π΅Π· ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ).WORKDIR /app
Β β ΠΠ°Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½Π° ΠΏΠ°ΠΏΠΊΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.COPY
Β +Β RUN pip install
Β β ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅.CMD
Β β ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° (Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°):
docker build -t python-flask-app .
-t python-flask-app
Β β ΠΠ°Π²Π°ΠΌΠ΅ ΠΈΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°..
Β β Π£ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ Dockerfile Π΅ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΏΠ°ΠΏΠΊΠ°.docker run -p 5000:5000 python-flask-app
-p 5000:5000
Β β ΠΡΠ΅Π½Π°ΡΠΎΡΠ²Π° ΠΏΠΎΡΡ 5000 ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΊΡΠΌ Π½Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΡ.ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π±ΡΠ°ΡΠ·ΡΡ Π½Π° http://localhost:5000
ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅:
ΠΠ΄ΡΠ°Π²Π΅ΠΉ, Docker! π³
π ΠΠΎΠ·Π΄ΡΠ°Π²Π»Π΅Π½ΠΈΡ! ΠΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!
ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ (Π½Π°ΠΏΡ. Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ), Docker Compose ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ.
docker-compose.yml
:version: "3.8" services: web: build: . ports: – "5000:5000"requirements.txt
Β Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½.localhost:5000
docker ps
).0.0.0.0
.CMD
Β Ρ Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΡΠΈΠΊΡΠ» ΠΈΠ»ΠΈ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅.Docker ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π»Π΅ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π±Π΅Π· Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΡ. Π‘ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΠΏΠΊΠΈ:
Dockerfile
.docker build
).docker run
).Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ Π½Π°ΡΠ°Π»ΠΎΡΠΎ β Docker ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ (ΠΌΡΠ΅ΠΆΠΈ, ΡΠΎΠΌΠΎΠ²Π΅, ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Ρ Kubernetes), Π½ΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΠ»ΠΈΠ΄Π½Π° ΠΎΡΠ½ΠΎΠ²Π°.
π ΠΡΠΎΠ±Π²Π°ΠΉΡΠ΅ Π³ΠΎ ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠΈ! ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈ, ΠΏΠΈΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅.
π’ Π‘ΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, Π°ΠΊΠΎ Π²ΠΈ Π΅ Π±ΠΈΠ»Π° ΠΏΠΎΠ»Π΅Π·Π½Π°! π
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°! ΠΠΊΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡ ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π±ΡΡΠΎΠ½ΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
Donate βοΈ ΠΠ°ΡΠ΅ΡΠ΅ Ρ PayPalDonate π³ ΠΠ°ΡΠ΅ΡΠ΅ Ρ Revolut