Dockerfile и docker compose

Dockerfile:

  • Описание:

    • Dockerfile - это текстовый файл, который содержит инструкции для пошагового создания Docker образа.

    • В Dockerfile вы определяете, какие шаги должны быть выполнены для сборки окружения внутри контейнера.

  • Основные инструкции:

    • FROM: Указывает базовый образ, от которого вы строите свой контейнер.

    • COPY/ADD: Копирует файлы из хост-системы в образ.

    • RUN: Выполняет команды на этапе сборки образа.

    • WORKDIR: Устанавливает рабочую директорию внутри контейнера.

    • CMD/ENTRYPOINT: Задает команду по умолчанию для запуска контейнера.

  • Пример:

    FROM python:3.8-slim
    
    WORKDIR /app
    COPY requirements.txt .
    
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY . .
    
    CMD ["python", "app.py"]

Docker Compose:

  • Описание:

    • docker-compose.yml - это файл конфигурации для определения и запуска множества сервисов (контейнеров) в вашем приложении.

    • Позволяет определить все необходимые параметры, включая сервисы, сети, тома и другие настройки.

  • Основные элементы:

    • version: Указывает версию синтаксиса Docker Compose.

    • services: Определяет сервисы (контейнеры) и их конфигурацию.

    • networks, volumes: Определяют сети и тома, используемые сервисами.

    • build, image: Задают способ создания образа (из Dockerfile или используя существующий).

  • Пример:

    version: '3'
    services:
      web:
        build: .
        ports:
          - "8080:80"
      db:
        image: postgres:latest
        environment:
          POSTGRES_PASSWORD: example

Взаимодействие между Dockerfile и docker-compose.yml:

  • Dockerfile обычно используется для описания одного контейнера и его сборки.

  • docker-compose.yml используется для описания нескольких сервисов, и их связей, запускаемых вместе.

Пример: Если ваш Dockerfile создает образ для веб-приложения, docker-compose.yml может определить также базу данных, сети, и другие сервисы, необходимые для работы всего приложения.

Last updated