Сборка образа с использованием имеющегося 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]
Имя образа может быть использовано в большинстве команд:
- werf build [IMAGE_NAME…] [options]
- werf publish [IMAGE_NAME…] [options]
- werf build-and-publish [IMAGE_NAME…] [options]
- werf run [options] [IMAGE_NAME] [– COMMAND ARG…]
Также имя образа используется при загрузке собранного образа в 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).network
: устанавливает сетевой режим для инструкций RUN во время сборки (подобноdocker build
--network).ssh
: прокидывает сокет агента SSH или ключи для сборки определённых слоёв (только если используется BuildKit) (подобноdocker build
--ssh).