SiteHost

manifest.yml File

The manifest.yml file is a YAML based schema definition of how to map external ports, directories, environment variables and various configuration options for your custom image.

Required Parameters

A manifest.yml is required with every custom image. The following describes the minimum parameters needed.

Example manifest.yml, all parameters displayed are required:

version: 1
image:
    label: my-custom-image
    type: www
    provider: 'My Account'

As you can see this is the minimum needed in a manifest.yml to build a custom image. The manifest.yml is generated when you create your custom image and some of the values are already pre-populated.

Exposing and Publishing Ports

Usually you will need to expose or publish a port so that you can access your application. Exposed ports are only accessible to containers running on the same server, whereas published ports are opened on the server making them publicly available.

It's worth noting that published ports are automatically exposed, regardless of whether or not you set exposed to false.

Example manifest.yml exposing port 80 and publishing port 8080:

version: 1
image:
  label: my-custom-image
  type: www
  provider: 'My Account'
  ports:
    80:
      exposed: true
      publish: false
      protocol: tcp
    8080:
      exposed: true
      publish: true
      protocol: tcp

The port protocol can be either tcp or udp.

Mounting directories

The following example tells us how to mount the directories you have in your default-data and where they should be made accessible inside the image.

Example manifest.yml mounting directories: config, logs, application:

version: 1
image:
  label: my-custom-image
  type: www
  provider: 'My Account'
  volumes:
    config:
      mode: ro
      dest: /container/config
    logs:
      mode: rw
      dest: /container/logs
    application:
      mode: rw
      dest: /container/application

In this example, you can see that we are mounting the directories config, logs, and application. These are named exactly the same as their respective folders inside the default-data directory. You can also specify whether the mounted folder is read-only or not.

Environment Variables

Sometimes it's useful to have environment variables which are used by your application, or if you would like to override a default system environment variable.

Example manifest.yml with environment variables:

version: 1
image:
  label: my-custom-image
  type: www
  provider: 'My Account'
  env_file:
    my_environment_variables: # the filename which will hold your environment variables
      vars:
        example_variable:
          # You need to assign a default_value for all custom images, but you can
          # overwrite them when creating the container via the Control Panel
          default_value: 'this will be the default value'

        # Another example of an environment variable
        remote_database:
          default_value: '127.0.0.1'

In this example we are creating two environment variables example_variable and remote_database which will be stored inside the environment file called my_environment_variables.

You can have as many variables as you like within each environment file, as well as multiple environment files defined in the manifest.yml. All environment variables must be of a key/value nature.

You can override defined environment variables using the environment variables functionality of our Control Panel.