UNPKG

@dgsh/docker-compose

Version:

Manage docker-compose from Node.js

76 lines (57 loc) 2.65 kB
# docker-compose `docker-compose` is a small library that allows you to run [docker-compose](https://docs.docker.com/compose/) via Node. The docker-compose executable is still required. Fork of https://github.com/PDMLab/docker-compose ## Installation ``` npm install --save @dgsh/docker-compose ``` ## Usage `docker-compose` current supports these commands: - `upAll(options)` - Create and start containers - always uses the `-d` flag due to non interactive mode - `pullAll(options)` - Pulls images associated with the services - `upMany(services, options)` - Create and start containers specified in `services` - always uses the `-d` flag due to non interactive mode - `upOne(service, options)` - Create and start container specified in `service` - always uses the `-d` flag due to non interactive mode - `containers(options)` - Returns IDs of running containers - `down(options)` - Stop and remove containers, networks, images, and volumes - `kill(options)` - Kill containers - `stop(options)` - Stop services - `rm(options)` - Remove stopped containers - always uses the `-f` flag due to non interactive mode - `exec(container, command, options)` - Exec `command` inside `container`, uses `-T` to properly handle stdin & stdout - `run(container, command, options)` - Run `command` inside `container`, uses `-T` to properly handle stdin & stdout - `buildAll(options)` - Build all images - `buildMany(services, options)` - Build images of specified services - `buildOne(service, options)` - Build image of specified service - `port(service, port, protocol, options)` - Returns host port for exposed service port All commands return a `Promise({object})` with an stdout and stderr strings ```javascript { out: 'stdout contents' err: 'stderr contents' } ``` ### Options `docker-compose` accepts these params: - `cwd {string}`: mandatory folder path to the `docker-compose.yml` - `config {(string|string[])}`: custom and/or multiple yml files can be specified (relative to `cwd`) - `[log] {boolean}`: optional setting to enable console logging (output of `docker-compose` `stdout`/`stderr` output) ### Example To start containers based on the `docker-compose.yml` file in your current directory, just call `compose.up` like this: ```javascript const DockerCompose = require('@dgsh/docker-compose') const compose = new DockerCompose({ cwd: path.join(__dirname), log: false }) compose.up().then( () => { console.log('done') }, (err) => { console.log('something went wrong:', err.message) } ) ``` To execute command inside a running container ```javascript compose.exec('node', 'npm install', { log: true }) ```