Configuration file

All the app specific configuration you need to run your app with automated deployments for testing.

There needs to be one file in your repo called valist.yml that specifies how to run your application. You can also include Dockerfiles for building static websites or for running your own web server.

valist.yml

The configuration file has a structure that is very similar to that of docker-compose.yml. However, it is more simplified and has more functionality to run and automate the setup of your staging environments efficiently.

The file must be in the root of the code repository's directory.

Here is an example of the configuration of a Nodejs backend using MongoDB. It also includes steps to load data to use for the staging environment. All these configuration options will be described later.

services:
  backend:
    path: backend
    public: true
    port: 5000
    cmd: node /app.js
    depends_on:
      - mongo
  mongo:
    image: mongo:4.0
steps:
  - name: mongodump
    path: mongodump
    out: /dump
    cache: true
  - name: load
    service: mongo
    copy:
      - mongodump:/
    cmd: mongorestore /dump

Here is an example of the configuration of a web application that is built with Angular that is build using a custom Dockerfile. The runtime "static" is used so you don't need to worry about including your own web server.

services:
  app:
    runtime: static
    dockerfile: ./valist.Dockerfile
    dist: /app/dist/sample-app
    index: index.html
    cmd: ng build --prod

Configuration options

The configuration file has the following sections.

  • Services – A map of services used to run your application. This may include several backends, databases, etc. The key is the name of the service which is used to identify it and to refer to it.

  • Steps – An ordered list of steps to run to setup your staging environment. This is often used to fill the database with some data. The output of a step can be stored in a directory which can be used by other steps. Steps provide other steps with data that can be cached so they don't need to be run for every commit.

Service options

Step options

A step executes a command either on an existing service or using its own container. To execute the command on an existing container, use the "service" option. The step can have its own container which is done by either specifying an image or by building a new image using code at the specified path with the specified Dockerfile.

Last updated