UPDATE:
While you still need JSON when using the sloppy.io API directly, our YML format is the preferred way in case of using our CLI as it is pretty similar to the docker-compose format.

The projects and multi-container applications you are hosting with sloppy.io are defined using a simple configuration file in JSON format. We call it sloppy.json. This configuration file provides a basic structure to build your Dockerized applications. Think of it as a Docker Compose file with a few unique add-ons that allow for container orchestration, web hosting, health checks and much more. In this documentation we’ll walk you through building your applications using the sloppy.json file format; and explain every single configuration option in detail.

Basic structure

To enable you to orchestrate even the most complex projects with numerous containers, the basic structure of the sloppy.json configuration file consists of:

Project
Definition of exactly one project.

Service(s)
Definition of one or multiple services.

App(s)
Within each service, one or multiple apps (think: Docker containers).

Understanding sloppy.io Projects, Services and Apps

A sloppy.io project, for example a “web shop”, is a group of one or more sloppy.io services. These form logical units in your project describing technical services (e.g. “front-end” or “back-end”) or other meaningful entities, like “encoding-service” or “database-service”. Each service itself comprises one or more components, called sloppy.io apps. Each app has its own name (id) and represents a single Docker container referencing its own image. These images can be one of the many public images from the Docker Hub or can be built by yourself. Here is a simple example, illustrating the basic structure of a sloppy.json configuration file by defining a simple project called my-first-project. It consists of one single service named my-first-service, which contains only one app called my-first-app.

{
  "project": "my-first-project",
  "services": [
    {
      "id": "my-first-service",
      "apps": [
        {
          "id": "my-first-app",
          "domain": {
            "uri": "MY-DOMAIN.sloppy.zone"
          },
          "image": "sloppy/apache-php",
          "cmd": "/app.sh",
          "port_mappings": [
            {
              "container_port": 80
            }
          ]  
        }  
      ]
    }
  ]
}

For more examples please visit us on GitHub.

Did this answer your question?