← Назад ко всем вопросам

В чем разница между ENV и COPY в Docker

1️⃣ Как кратко ответить

ENV устанавливает переменные окружения внутри контейнера, которые могут быть использованы приложениями во время выполнения. COPY копирует файлы и директории из контекста сборки на файловую систему контейнера на этапе сборки образа.

2️⃣ Подробное объяснение темы

В Dockerfile, который используется для создания Docker-образов, есть множество инструкций, каждая из которых выполняет определенную задачу. Две из таких инструкций — это ENV и COPY. Они служат для разных целей и используются на разных этапах работы с контейнерами.

ENV

Инструкция ENV используется для установки переменных окружения внутри контейнера. Эти переменные могут быть использованы приложениями, которые запускаются внутри контейнера, для настройки их поведения. Например, вы можете установить переменную окружения, которая указывает путь к конфигурационному файлу или задает режим работы приложения (например, "production" или "development").

Пример использования ENV в Dockerfile:

# Устанавливаем переменную окружения NODE_ENV в значение "production"
ENV NODE_ENV=production
  • ENV — ключевое слово, указывающее на установку переменной окружения.
  • NODE_ENV — имя переменной окружения.
  • production — значение, которое будет присвоено переменной.

Эта инструкция полезна, когда нужно передать конфигурационные параметры в приложение, не изменяя его исходный код.

COPY

Инструкция COPY используется для копирования файлов и директорий из контекста сборки (локальной файловой системы) в файловую систему контейнера. Это необходимо для того, чтобы приложение и его зависимости были доступны внутри контейнера.

Пример использования COPY в Dockerfile:

# Копируем файл package.json из текущей директории в директорию /app внутри контейнера
COPY package.json /app/
  • COPY — ключевое слово, указывающее на копирование файлов.
  • package.json — исходный файл, который находится в контексте сборки.
  • /app/ — целевая директория внутри контейнера, куда будет скопирован файл.

COPY используется для того, чтобы включить в образ все необходимые файлы и директории, которые нужны для работы приложения. Это могут быть исходные коды, конфигурационные файлы, статические ресурсы и т.д.

Применение и работа

  • ENV: Используется на этапе выполнения контейнера. Переменные окружения, установленные с помощью ENV, доступны всем процессам, которые запускаются внутри контейнера. Это позволяет динамически изменять поведение приложения без необходимости пересборки образа.

  • COPY: Используется на этапе сборки образа. Файлы и директории, скопированные с помощью COPY, становятся частью образа и доступны в контейнере сразу после его запуска. Это позволяет включить все необходимые ресурсы в образ, чтобы приложение могло работать автономно.

Таким образом, ENV и COPY выполняют разные задачи: первая управляет конфигурацией на уровне переменных окружения, а вторая обеспечивает наличие необходимых файлов и директорий в контейнере.

Тема: Docker / Контейнеры
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки