run-container

run a docker container in nodejs, as concisely as possible

Usage no npm install needed!

<script type="module">
  import runContainer from 'https://cdn.skypack.dev/run-container';
</script>

README

run-container

run a docker container in nodejs

runs a container using dockerode, bootstrapping the pull & start processes, whilst also exposing a compact function to simplify docker's and dockerode's otherwise complex APIs

JavaScript Style Guide TypeScript package semantic-release CircleCI

usage

import { run, runSimple } from 'run-container'

// runSimple, minimal example
const container = await runSimple({ image: 'postgres' }) // => Dockerode.Container instance
await container.remove({ force: true })

// runSimple, rich example
await runSimple({
  autoRemove: true,
  bindMounts: { '/path/to/host/file.sh': '/path/to/container/file.sh' },
  cmd: ['bash', '/path/to/container/file.sh'],
  env: { 'KEY': 'VALUE' },
  image: 'bash',
  name: 'script-fun',
  ports: { '4000': '4000' } // tcp ports only. otherwise, use `run`
})
await container.wait()
await container.remove()

// run
// exposes Dockerodes.ContainerCreateOptions full API,
// which directly reflects the docker engine API!
// https://docs.docker.com/engine/api/latest/
const container = await run({
  Image: 'postgres',
  ExposedPorts: {
    '5432/tcp': {}
  },
  HostConfig: {
    AutoRemove: true,
    PortBindings: { '5432/tcp': [{ HostPort: '40000' }] }
  }
})
// ... do work
await container.remove({ force: true })

see the exported typescript typings in the docs folder, or check out the tiny source.