docker-compose
docker-compose
is a small library that allows you to run docker-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 inservices
- always uses the-d
flag due to non interactive mode -
upOne(service, options)
- Create and start container specified inservice
- 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)
- Execcommand
insidecontainer
, uses-T
to properly handle stdin & stdout -
run(container, command, options)
- Runcommand
insidecontainer
, 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
{
out: 'stdout contents'
err: 'stderr contents'
}
Options
docker-compose
accepts these params:
-
cwd {string}
: mandatory folder path to thedocker-compose.yml
-
config {(string|string[])}
: custom and/or multiple yml files can be specified (relative tocwd
) -
[log] {boolean}
: optional setting to enable console logging (output ofdocker-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:
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
compose.exec('node', 'npm install', { log: true })