Стадия dockerInstructions
docker:
  VOLUME:
  - <volume>
  EXPOSE:
  - <expose>
  ENV:
    <env_name>: <env_value>
  LABEL:
    <label_name>: <label_value>
  ENTRYPOINT: <entrypoint>
  CMD: <cmd>
  WORKDIR: <workdir>
  USER: <user>
  HEALTHCHECK: <healthcheck>

Инструкции в Dockerfile можно условно разделить на две группы: сборочные инструкции и инструкции, которые влияют на manifest Docker-образа. Так как werf-сборщик использует свой синтаксис для описания сборки, поддерживаются только следующие Dockerfile-инструкции второй группы:

  • USER — имя пользователя (или UID) и опционально пользовательская группа (или GID) (подробнее);
  • WORKDIR — рабочая директория (подробнее);
  • VOLUME — точка монтирования (подробнее);
  • ENV — переменные окружения (подробнее);
  • LABEL — метаданные (подробнее);
  • EXPOSE — описание сетевых портов, которые будут прослушиваться в запущенном контейнере (подробнее);
  • ENTRYPOINT — команда по умолчанию, которая будет выполнена при запуске контейнера (подробнее);
  • CMD — аргументы по умолчанию для ENTRYPOINT (подробнее);
  • HEALTHCHECK — инструкции, которые Docker может использовать для проверки работоспособности запущенного контейнера (подробнее).

Эти инструкции могут быть указаны с помощью директивы docker в конфигурации.

Пример:

docker:
  WORKDIR: /app
  CMD: ["python", "./index.py"]
  EXPOSE: '5000'
  ENV:
    TERM: xterm
    LC_ALL: en_US.UTF-8

Указанные в конфигурации Docker-инструкции применяются на последней стадии конвейера стадий, стадии docker_instructions. Поэтому указание Docker-инструкций в werf.yaml никак не влияет на сам процесс сборки, а только добавляет данные к уже собранному образу.

Если вам требуются определённые переменные окружения во время сборки (например, TERM), то вам необходимо использовать базовый образ, в котором эти переменные окружения установлены, или экспортировать их в пользовательской стадии.