@dgsh/docker-compose
Version:
Manage docker-compose from Node.js
76 lines (57 loc) • 2.65 kB
Markdown
# 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 })
```