Skip to content

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

Описание:
Dockerfile — это сценарий сборки образа. Он содержит пошаговые инструкции, которые Docker выполняет, чтобы создать финальный образ. Каждая строка создает новый слой, поэтому важно соблюдать порядок и учитывать кэш.


Без инструкций не работает

Минимальный пример Dockerfile:

FROM alpine
CMD ["echo", "Hello from Docker!"]

Образ будет собран из alpine и при запуске выведет строку.


Инструкция FROM – базовый образ

Синтаксис:

FROM [образ][:тег]

Описание:
Устанавливает базовый образ, на котором будет строиться всё остальное. Это всегда первая строка.

Пример:

FROM node:18


Инструкция COPY – копирование файлов

Синтаксис:

COPY [локальный_путь] [путь_в_контейнере]

Описание:
Копирует файлы или директории из контекста сборки в контейнер.

Пример:

COPY package.json .


Инструкция ADD – расширенное копирование

Синтаксис:

ADD [источник] [цель]

Описание:
Похож на COPY, но поддерживает: - автоматическую распаковку архивов - загрузку по URL (не рекомендуется)

Пример:

ADD assets.tar.gz /app/assets/


Инструкция RUN – выполнение команды

Синтаксис:

RUN [команда]

Описание:
Выполняет команду на этапе сборки образа. Результат сохраняется в слое.

Пример:

RUN apt update && apt install -y curl


Инструкция CMD – команда по умолчанию

Синтаксис:

CMD ["команда", "аргумент"]

Описание:
Определяет команду, выполняемую при запуске контейнера. Можно переопределить через docker run.

Пример:

CMD ["node", "app.js"]


Инструкция ENTRYPOINT – основной процесс

Синтаксис:

ENTRYPOINT ["команда", "аргумент"]

Описание:
Похоже на CMD, но не переопределяется так легко. Используется, если контейнер всегда должен запускать что-то одно.

Пример:

ENTRYPOINT ["python3"]


Инструкция WORKDIR – рабочая директория

Синтаксис:

WORKDIR [путь]

Описание:
Задаёт рабочую директорию для всех следующих инструкций RUN, CMD, COPY и т.д.

Пример:

WORKDIR /app


Инструкция ENV – переменные окружения

Синтаксис:

ENV [ключ]=[значение]

Описание:
Задаёт переменные окружения во время сборки и для запуска контейнера.

Пример:

ENV PORT=3000


Инструкция ARG – аргументы сборки

Синтаксис:

ARG [имя]

Описание:
Позволяет передавать значения при сборке через --build-arg. Не сохраняются в финальном образе.

Пример:

ARG VERSION
RUN echo "Building version $VERSION"

docker build --build-arg VERSION=1.2 .

Инструкция EXPOSE – открытый порт

Синтаксис:

EXPOSE [порт]

Описание:
Документирует порты, которые контейнер может слушать. Не пробрасывает их автоматически.

Пример:

EXPOSE 8080


Инструкция VOLUME – том для хранения данных

Синтаксис:

VOLUME [путь]

Описание:
Создаёт точку монтирования. Данные сохраняются вне контейнера (анонимный volume).

Пример:

VOLUME /data


Инструкция USER – пользователь внутри контейнера

Синтаксис:

USER [имя_пользователя|UID]

Описание:
Определяет пользователя, от которого будут выполняться команды и запускаться процесс.

Пример:

USER node


Инструкция LABEL – метаданные

Синтаксис:

LABEL [ключ]=[значение]

Описание:
Добавляет метки к образу. Используются для документации, мониторинга, автоматизации.

Пример:

LABEL maintainer="dev@myapp.com"


📌 См. также:
- 📄 Примеры Dockerfile
- 🏗️ docker build — флаги --build-arg, --no-cache, --pull, --target
- 🚀 docker run — запуск образа после сборки
- 🧩 multi-stage Dockerfile — сборка с несколькими этапами