The applications deployed in the stack utilize a combination of data-at-rest (static config, files, etc) and runtime data (live database files). The realtime data can't be [backed up][duplicity] with a simple copy-paste, so where we employ databases, we also include containers to perform a regular export of database data to a filesystem location.
So that we can confidently backup all our data, I've setup a data layout as per the following example:
Configuration data goes into
/var/data/config/[recipe name], and is typically only a docker-compose .yml, and a .env file
Runtime data (typically database files or files-in-use) are stored in
/var/data/runtime/[recipe-name], and are excluded from backup (They change constantly, and cannot be safely restored).
Static data goes into
/var/data/[recipe name], and includes anything that can be safely backed up while a container is running. This includes database exports of the runtime data above.