Charts

Similar to a Helm chart, a Compose-me chart is a directory containing template files. The main entrypoint is the docker-compose.template.yaml file. This file is a Jinja template that will be rendered into a docker-compose.yaml file in the output directory.

Example:

# docker-compose.template.yaml
version: '3.4'
services:
  web:
    image: "{{Values.image}}"
    ports:
      - "{{Values.port}}:80"
    volumes:
      - ./nginx.conf:/etc/nginx/default.conf:ro

Values

The Values object contains the values defined in the values.yaml file. A chart may define its default values in this file. The values can be overriden by the project.

Example:

# values.yaml
image: nginx:alpine
port: 80

Auxiliary files

Additional files can be rendered using Jinja templates and copied to the output directory alongside the docker-compose.yaml file. These files must be listed in the x-compose-me.templates section.

# docker-compose.template.yaml
# ...
x-compose-me:
  templates:
    - ./nginx.conf

Plugins

A chart may contain a plugin.py script in the root of your project. This script is executed before rendering the templates and can be used to define custom Jinja filters, as well as generating computed values that can be referenced in the templates using the Computed object.

Learn more about plugins in Plugin API.