Dockerfile и docker compose

Dockerfile и Docker Compose — это два разных, но взаимосвязанных инструмента Docker, используемых для создания и управления контейнерами.


1. Dockerfile

  • Назначение: описывает как собрать образ контейнера.

  • Что содержит: инструкции по установке зависимостей, копированию кода, настройке среды и запуску приложения.

  • Пример:

FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  • Результат: образ myapp:latest, который можно запускать контейнером через docker run.


2. Docker Compose

  • Назначение: описывает как запускать несколько контейнеров и их связи в виде сервиса.

  • Что содержит:

    • Сервисы (контейнеры) и их образы или инструкции сборки,

    • проброс портов, маунты директорий, переменные окружения, зависимости между сервисами.

  • Пример:

version: "3.9"

services:
  app:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    depends_on:
      - db

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase
    ports:
      - "5432:5432"
  • Результат: запуск нескольких контейнеров командой docker-compose up --build.


Ключевое различие

Свойство
Dockerfile
Docker Compose

Цель

Создание образа

Запуск и управление контейнерами

Содержит

Инструкции сборки образа

Конфигурацию сервисов и связей

Результат

Образ контейнера

Запущенные контейнеры и сеть между ними

Команда запуска

docker builddocker run

docker-compose up


Итог: Dockerfile создаёт образ, а Docker Compose управляет запуском одного или нескольких контейнеров, их сетями и томами.

Last updated

Was this helpful?