Ответ
Инструкция FROM является обязательной для любого валидного Dockerfile. Она определяет базовый образ, от которого начинается сборка. Без неё сборщик Docker не имеет контекста для выполнения последующих инструкций.
Ключевые моменты:
- Позиция:
FROMдолжна быть первой исполняемой инструкцией в Dockerfile. Ей могут предшествовать только инструкцииARG, объявляющие переменные для этапаFROM. - Назначение: Задает начальную точку — операционную систему (например,
ubuntu:22.04) или готовый средовый образ (например,python:3.11-slim,node:18-alpine).
Пример минимального Dockerfile:
# Обязательная инструкция FROM
FROM alpine:latest
# Далее можно добавлять RUN, COPY, CMD и другие инструкции
CMD ["echo", "Hello from container"]
Особый случай — scratch: Для создания сверхминимальных образов можно использовать специальный образ scratch, который представляет собой пустую файловую систему.
FROM scratch
COPY myapp /myapp
CMD ["/myapp"]
В своей практике я всегда явно указываю тег версии в FROM (например, nginx:1.25, а не просто nginx), чтобы обеспечить воспроизводимость сборок и избежать неожиданных изменений при обновлении базового образа.