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>
Директива
dockerустарела и будет удалена в версии v3. Вместо неё используйте директивуimageSpec. Подробнее о директивеimageSpecможно прочитать здесь.
Инструкции в 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), то вам необходимо использовать базовый образ, в котором эти переменные окружения установлены, или экспортировать их в пользовательской стадии.