node package manager

oast

oast

GitterBuild Status

Build a container-based system for production, a companion for fuge. Based on Docker.

If you're using this module, and need help, you can:

Install

npm i oast -g

Usage

From oast --help:

usage: oast [opts] compose.yml
 
available options:
  -o [FILE], --output [FILE]    write the system to the given file
  -r [REPO], --repo [REPO]      base URL for the registry repository to
                                push images to
  -h, --help                    this message

Example

(from the root of this repository)

oast -o out.sys fixture/fuge/compose-dev.yml --repo localhost:5000/fixture

It writes the system definition into out.sys, and pushes those images to a local registry.

Labels

It adds an image label to each built image, in the form of:

LABEL oast.commit=48ed274cc32020b3837c8e59c10033480376208c
LABEL oast.id=service1

API

oast can be used as a module as well.

oast(yml, stream[, opts], cb(err, sys))

Build the given yml file, and prints all output to stream. If stream is a TTY (e.g. stdout or stderr), docker's progress bars will be showed.

Available options (in opts):

  • repo: the Docker repository we will push images to

Example sys passed to cb:

{
  "name": "xeno",
  "id": "123456",
  "containerDefinitions": [
    {
      "specific": {
        "type": "process",
        "proxyPort": [
          "auto"
        ],
        "servicePort": [
          "auto"
        ],
        "buildScript": "cd api && npm install; ",
        "execute": {
          "exec": "node api/index.js",
          "environment": [],
          "process": "node api/index.js"
        },
        "commit": "48ed274cc32020b3837c8e59c10033480376208c",
        "imageId": "2d76b9cf495552ce86251182df05db83305f07f084a146bb47981f9154e84a78"
      },
      "type": "docker",
      "id": "frontend",
      "name": "frontend"
    },
    {
      "specific": {
        "type": "process",
        "proxyPort": [
          "auto"
        ],
        "servicePort": [
          "auto"
        ],
        "buildScript": "npm install; ",
        "execute": {
          "exec": "node service.js",
          "environment": [],
          "process": "node service.js"
        },
        "commit": "48ed274cc32020b3837c8e59c10033480376208c",
        "imageId": "0e3c13c2c2d9beb540dc09aa9abe5ebffa781d7f94e91d97723a08d188ed6cd4"
      },
      "type": "docker",
      "id": "service1",
      "name": "service1"
    },
    {
      "specific": {
        "type": "process",
        "proxyPort": [
          "auto"
        ],
        "servicePort": [
          "auto"
        ],
        "buildScript": "npm install; ",
        "execute": {
          "exec": "node service.js",
          "environment": [],
          "process": "node service.js"
        },
        "commit": "48ed274cc32020b3837c8e59c10033480376208c",
        "imageId": "0b081fe361bd98a583ac0e76e954a4662b77340ac1aed17708c19f731b77ec3d"
      },
      "type": "docker",
      "id": "service2",
      "name": "service2"
    }
  ]
}

Contributing

The apparatus team encourage open participation. If you feel you can help in any way, be it with documentation, examples, extra testing, or new features please get in touch.

License

Copyright the apparatus team 2016, Licensed under MIT.