🐳 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