Tasks¶
Each resource defined in the dobi.yml
provides one or more tasks. Each
resource has a default action, which is usually the “create” or “build” action
associated with that resource (build an image, run a container, etc).
Each resource also defines a remove
task which can be used to remove
anything that was created by the create action of the resource.
To run a task use the name of the resource, and optionally an action name.
# Run the test resource
dobi test
# Run the remove action for the builder resource
dobi builder:rm
Built-in Tasks¶
Image Tasks¶
image resources have the following tasks:
:build
(default)¶
Build a Docker image from a Dockerfile. The image is tagged using the image
field and the first tag from the list of tags in the image resource. If the
tags field is not set, the value of {unique}
will be used as the time. See
Config Variables for more information about how to set the unique value.
Note
For every image built by dobi a small file is created in the ./.dobi/images/
directory (relative to the directory which contains the dobi.yaml
). This
file is used to track the modified time of the image. This file is necessary
because Docker does not store the “last built” time of an image, only the first
time it was built. If the image is built again, and the build is completely cached,
no new image id gets created, so the “created time” of the image is actually the
original created time.
Without this file images often appear as stale, because the original created time
of the image is earlier than the last attempted build. This will happen when a file
in the image context is modified, but that modification doesn’t change the docker
build cache (which is the case if the modified file is never added to the image
using COPY
or ADD
). By saving the image id in a local file, and using the
modified time of that file as the “last build time”, dobi is able to skip
the build of an image in many cases.
If Docker adds a “last modified” time to the image data, dobi will be able to use that time instead of tracking the time itself.
:pull
¶
Pull the image from a registry based on the pull policy. pull is the default action if the image resource does not have a context or dockerfile field defined.
:tag
¶
Tag the image with all the tags in the tags field.
The :tag
action always depends on the :build
action for the image.
:push
¶
Push the image tags to a registry.
The :push
action always depends on the :tag
action for the image.
Job Tasks¶
job resources have the following tasks:
:run
(default)¶
Run a process in a container.
:remove
¶
alias: | :rm |
---|
Remove the container (if it exists), and remove the artifact (if one is defined).
:capture(VARIABLE)
Capture stdout of the job in an environment variable. The environment variable will be available to subsequent tasks.
Mount Tasks¶
mount resources have the following tasks:
:create
(default)¶
Create the host directory to be bind mounted, if it doesn’t already exist.
Alias Tasks¶
alias resources have the following tasks:
:run
(default)¶
Run all the tasks in the list of tasks.
:remove
¶
alias: | :rm |
---|
Remove runs the remove task for all the resources in the task list in reverse order.
Compose Tasks¶
compose resources have the following tasks:
:up
(default)¶
Up runs docker-compose up -d
with the files and project name from
the resource to create a new isolated environment. When the dobi
task
execution is complete the project is stopped with docker-compose stop
.
To keep the project running use :attach
or :detach
.
:down
¶
alias: | :rm , :remove |
---|
Down runs docker-compose down
to remove all the containers and networks created
by Compose.
:attach
¶
Attach runs docker-compose up
and attaches to the logs.
:detach
¶
Detach runs docker-compose up -d
and the project continues to run when dobi
exits.