image: <image name... || ~>
dockerfile: <relative path>
context: <relative path>
target: <docker stage name>
args:
  <build arg name>: <value>
addHost:
- <host:ip>

Сборка образа с использованием имеющегося Dockerfile — самый простой путь начать использовать werf в существующем проекте. Ниже приведен пример минимального файла werf.yaml, описывающего образ example проекта:

project: my-project
configVersion: 1
---
image: example
dockerfile: Dockerfile

Также, вы можете описывать несколько образов из одного и того же Dockerfile:

image: backend
dockerfile: Dockerfile
target: backend
---
image: frontend
dockerfile: Dockerfile
target: frontend

И конечно, вы можете описывать образы, основанные на разных Dockerfile:

image: backend
dockerfile: dockerfiles/DockerfileBackend
---
image: frontend
dockerfile: dockerfiles/DockerfileFrontend

Именование

Образы описываются с помощью директивы image: image: <image name>, с которой начинается описание образа в конфигурации. Параметр image name — строка с именем, по аналогии с именем образа в Docker:

image: frontend

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

image: ~

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

image: frontend
...
---
image: backend
...

Образ может иметь несколько имен, указываемых в виде YAML-списка (это эквивалентно описанию нескольких одинаковых образов с разными именами):

image: [main-front,main-back]

Имя образа может быть использовано в большинстве команд:

Также имя образа используется при загрузке собранного образа в Docker registry (читайте подробнее в соответствующей статье).

Директивы Dockerfile

werf, так же как и docker build, собирает образы, используя Dockerfile-инструкции, контекст, а также дополнительные опции:

  • dockerfile (обязателен): определяет путь к Dockerfile относительно папки проекта.
  • context: определяет путь к контексту внутри папки проекта (по умолчанию — папка проекта, .).
  • target: связывает конкретную стадию Dockerfile (по умолчанию — последнюю, смотри docker build --target).
  • args: устанавливает переменные окружения на время сборки (смотри docker build --build-arg).
  • addHost: устанавливает связь host-to-IP (host:ip) (смотри docker build --add-host).