# @dgsh/docker-compose

> Manage docker-compose from Node.js

Latest version **1.1.0** (published 2019-01-31) · MIT license · 0 weekly downloads

## Install

```sh
npm install @dgsh/docker-compose
pnpm add @dgsh/docker-compose
yarn add @dgsh/docker-compose
bun add @dgsh/docker-compose
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2019-01-31 |
| First published | 2018-10-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 12.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | dgsh |
| Maintainers | dominicporteous |
| Keywords | devops, devops-tools, docker, docker-compose, test, test-tools |

## Links

- npm: https://www.npmjs.com/package/@dgsh/docker-compose
- Repository: git@gitlab.com/dgsh/npm/docker-compose
- npm.io page: https://npm.io/package/@dgsh/docker-compose

## Dependencies (1)

- [clean-array](https://npm.io/package/clean-array.md) ^1.0.0

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 1.1.0 (latest) — 2019-01-31
- 1.0.6 — 2018-10-30
- 1.0.5 — 2018-10-30
- 1.0.4 — 2018-10-21
- 1.0.3 — 2018-10-21
- 1.0.2 — 2018-10-21
- 1.0.1 — 2018-10-21
- 1.0.0 — 2018-10-21

## README

# 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 })
```

---
_Source: https://npm.io/package/@dgsh/docker-compose · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
