🐳 Dockerfile ΠΈ Docker Compose: ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

by itisgood

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 для оркСстровки Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с ΡΠ΅Ρ‚ΡŒΡŽ ΠΈ зависимостями.

см. Ρ‚Π°ΠΊΠΆΠ΅:

 

Loading

You may also like

Leave a Comment