Project structure

- apps
    - conf
    - continuous-deployment
    - healthchecks
    - repos-enabled
    - www-data
- containers
- data
- hooks.d


Most important section, here you put application definitions, configure healthchecks for monitoring, repositories for versioning of applications in volumes.


docker-compose files.
".disabled" suffix disables a file.

To enable/disable use "make config_enable APP_NAME=smtp"
To list enabled: "make ✗ make list_configs_enabled"
Listing disabled: "make list_configs_disabled"


Allows to configure a thin-deployer which can take incoming webhooks and turn into the commands. Example scenario: When a push to docker registry happens, then a HTTP request is made, thin-deployer runs a command that updates the container.


Status monitoring, in “checks” you can add custom health check functions (scripts in any language), in “configured” you define usage and parameters. The environment uses infracheck application for healthchecking.

repos-enabled and www-data:

If you have applications that are mounted as volume in a generic container, you may manage them and deploy new versions using the application-as-volume feature.


The containers directory contains data that is added to containers as a volume. The difference from “data” directory is, that “containers” is kept in git, it’s a place for configuration files. “data” is mostly the binary data generated by applications.


Binary data generated by containers, eg. MySQL tables, logs. Mounted as volume to applications. Not kept in git.


A place to keep scripts that launch before environment starts, stops etc.

- deployment-pre: Runs on "make deployment_pre", used by Ansible role
- post-down: Runs when environment stops
- post-start: Runs right after "make start"