Dray allows users to separate a workflow into discrete steps each to be handled by a single container. This isolation makes efficient use of compute resources and also allows workflows to be easily changed, extended or re-composed via this loosely coupled architecture.
Input.Dray receives a job description -- the list of Docker images to run along with any environment variables to be injected into those images.
Output.When all the steps of the job have completed, Dray saves the overall status of the job and makes it available via the rest API.
Dray starts the first container in the sequence and records in its output in order to pass it along to the next one in the chain. Once a container stops execution, Dray cleans it up.
Dray starts the next container and uses the output of the previous step as the input to the current one.
The remaining containers remained queued as Dray monitors the progress of the job.