@runnable/loki

3.3.0 • Public • Published

loki

js-standard-style Build Status Code Climate Dependency Status devDependency Status

NPM

Runnable Docker/Swarm client library with batteries.

Loki

Features

  • include both Docker and Swarm clients
  • Swarm client has all additional swarmerode Promisified methods
  • automatically report each docker call to datadog using dogerode
  • HTTPS certs are required. Will throw an error
  • Base client includes Promisified container actions like stopContainer, logContainer etc
  • You can still call Dockerode directly. Dockerode instance is available under client property

Usage

You can use loki Docker client Promisified extra container functions like this:

  const Docker = require('loki').Docker

  const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
  dockerClient.stopContainerAsync('71501a8ab0f8')
    .then(function () {
      console.log('container stopped')
    })
    .catch(function (err) {
      console.log('container failed to stop', err)
    })

You can use loki Dockerode client methods like this:

  const Docker = require('loki').Docker

  const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
  dockerClient.getContainer('71501a8ab0f8')
    .stop(function (err) {
      if (err) {
        return console.log('container failed to stop', err)
      }
      console.log('container stopped')
    })

You can use loki Dockerode promisified methods directly like this:

  const Docker = require('loki').Docker

  const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
  dockerClient.listConatinersAsync('71501a8ab0f8')
    .then(function (containers) {
      console.log('found containers')
    })

You can extend loki Docker client with your app specific functions:

  const Docker = require('loki').Docker

  class MyDocker extends Docker {


  }

  const myDocker = new MyDocker()
  dockerClient.stopContainerAsync('71501a8ab0f8')
    .then(function () {
      console.log('container stopped')
    })
    .catch(function (err) {
      console.log('container failed to stop', err)
    })

Base functions

Every Loki client include utility Promise-based functions to deal with containers.

E.x. instead of this code

  const Docker = require('loki').Docker

  const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
  dockerClient.getContainer('71501a8ab0f8')
    .stop(function (err) {
      console.log('stopped container?', err)
    })

You can do the following

  const Docker = require('loki').Docker

  const dockerClient = new Docker({ host: 'https://127.0.0.1:4242'})
  dockerClient.stopContainerAsync('71501a8ab0f8')
    .then(function () {
      console.log('container was stopped')
    })
  • topContainerAsync
  • startContainerAsync
  • commitContainerAsync
  • inspectContainerAsync
  • stopContainerAsync
  • pauseContainerAsync
  • unpauseContainerAsync
  • restartContainerAsync
  • resizeContainerAsync
  • attachContainerAsync
  • removeContainerAsync
  • killContainerAsync
  • execContainerAsync
  • renameContainerAsync
  • logsContainerAsync
  • statsContainerAsync
  • getArchiveContainerAsync
  • infoArchiveContainerAsync
  • putArchiveContainerAsync
  • updateContainerAsync

Swarm functions

  • swarmHostsAsync
  • swarmInfoAsync
  • swarmHostExistsAsync

Conventions

  • Each client instance has all functions from Dockerode client available to call directly.
  • Each client instance has Promisified Dockerode functions available with Async suffix.
  • Each Swarm client instance has all functions from Swarmerode client available to call directly.
  • Each Swarm client instance has Promisified Swarmerode functions available with Async suffix.

Package Sidebar

Install

npm i @runnable/loki

Weekly Downloads

2

Version

3.3.0

License

MIT

Last publish

Collaborators

  • runnabear