Docker ΠΏΡΠΎΠΈΠ·Π²Π΅Π» ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π² Docker – ΡΡΠΎ Dockerfile ΠΈ Docker Compose.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ±Π° ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ, ΠΎΠ½ΠΈ ΡΠ»ΡΠΆΠ°Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠ΅Π»ΡΠΌ.
Dockerfile ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Docker Compose ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ.
π³Β ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Docker Compose ΠΈ Docker Swarm
Dockerfile ΠΈ Docker Compose
Dockerfile – ΡΡΠΎ ΡΠΊΡΠΈΠΏΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° Docker.
Π Π½Π΅ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π·, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π΄Ρ.
Docker Compose, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, – ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Docker Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»Π° docker-compose.yml.
ΠΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Ρ ΡΠ΅ΡΡΡ, ΡΠΎΠΌΠ°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ½ΠΈ ΡΠ»ΡΠΆΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ΅Π»Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Dockerfile ΠΈ Docker Compose.
ΠΡΠΈΠΌΠ΅Ρ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Dockerfile
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flask Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Dockerfile.
Dockerfile Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Flask: ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ Dockerfile Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Flask Π½Π° Python.
# Use an official Python runtime as base image FROM python:3.9 # Set the working directory WORKDIR /app # Copy application files COPY . . # Install dependencies RUN pip install -r requirements.txt # Define the command to run the app CMD ["python", "app.py"]
ΠΡΠΎΡ Dockerfile ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π· Python, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Docker Compose Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Docker Compose Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Flask Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ PostgreSQL.
docker-compose.yml Π΄Π»Ρ Flask ΠΈ PostgreSQL: ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Docker Compose Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Flask ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ PostgreSQL.
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
ΠΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π΅ ΡΠ»ΡΠΆΠ±Ρ:
- web: ΠΡΠΎ ΡΠ»ΡΠΆΠ±Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Flask. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° build: . ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Docker Compose Π½Π° ΡΠ±ΠΎΡΠΊΡ ΠΎΠ±ΡΠ°Π·Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Dockerfile, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ΅ ΡΠ°Π³ΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² Dockerfile, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- db: ΠΡΠΎ ΡΠ»ΡΠΆΠ±Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ PostgreSQL. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π·, ΠΎΠ½ Π±Π΅ΡΠ΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ°Π· PostgreSQL ΠΈΠ· Docker Hub. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΠΈΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° depends_on Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Dockerfile ΠΈ Docker Compose ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Dockerfile, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Docker Compose Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Ρ ΡΠ΅ΡΡΡ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ.
ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅:
- π³Β Docker ADD ΠΈ COPY: Π² ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ°?
- π³Β ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ENTRYPOINT Ρ ΠΏΠΎΠΌΠΎΡΡΡ docker run
- π³Β ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Docker ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°
- π³Β ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ compose.yaml, ΡΠ΅ΠΌ docker-compose.yml
![]()
