diff --git a/docs/index.md b/docs/index.md index 967ba6f..578fa83 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,149 +1,133 @@ --- layout: default -title: Markdown kitchen sink +title: README nav_order: 99 --- -Text can be **bold**, _italic_, or ~~strikethrough~~. + -[Link to another page](another-page). +# Manage Docker-Compose via Node.js -There should be whitespace between paragraphs. +`docker-compose` is a small library that allows you to run [docker-compose](https://docs.docker.com/compose/)(which is still required) via Node.js. This is useful to bootstrap test environments. You might also generate your `docker-compose.yml` files using [composefile](https://www.npmjs.com/package/composefile). -There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. +## Existing user? We need your help +First of all: thanks for using the `docker-compose` module. +As described in [#44][i44], we're planning to provide more guidance for CI/CD when using the `docker-compose` module and it would be great if you could support us here. More details in [#44][i44]. -# [](#header-1)Header 1 +[i44]: https://github.com/PDMLab/docker-compose/issues/44 -This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. +## Installation -## [](#header-2)Header 2 +``` +npm install --save-dev docker-compose +``` -> This is a blockquote following a header. -> -> When something is important enough, you do it even if the odds are not in your favor. +## Usage -### [](#header-3)Header 3 +`docker-compose` current supports these commands: -```js -// Javascript code with syntax highlighting. -var fun = function lang(l) { - dateformat.i18n = require('./lang/' + l) - return true; +* `upAll(options)` - Builds, (re)creates, starts, and attaches to containers for all services - always uses the `-d` flag due to non interactive mode +* `upMany(services, options)` - Builds, (re)creates, starts, and attaches to containers for the services specified in `services` - always uses the `-d` flag due to non interactive mode +* `upOne(service, options)` - Builds, (re)creates, starts, and attaches to containers for a service specified in `service` - always uses the `-d` flag due to non interactive mode +* `down(options)` - Stops containers and removes containers, networks, volumes, and images created by `up` +* `kill(options)` - Force stop service containers +* `stop(options)` - Stop running containers without removing them +* `rm(options)` - Remove stopped service 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 +* `logs(container, command, options)` - Show logs of service. Use `options.follow` `true|false` to turn on `--follow` flag. +* `run(service, command, options)` - Run a one-off `command` on a service, uses `-T` to properly handle stdin & stdout +* `buildAll(options)` - Build or rebuild services +* `buildMany(services, options)` - Build or rebuild services +* `buildOne(service, options)` - Build or rebuild service +* `restartAll(options)` - Restart all services +* `restartMany(services, options)` - Restart services +* `restartOne(service, options)` - Restart service +* `ps(options)` - Lists containers information +* `config(options)` - Validates configuration files and returns configuration yaml +* `configServices(options)` - Returns list of services defined in configuration files +* `configVolumes(options)` - Returns list of volumes defined in configuration files + +All commands return a `Promise({object})` with stdout and stderr strings and an exit code: +```javascript +{ + out: 'stdout contents', + err: 'stderr contents', + exitCode: 0, // !== 0 in case of an error } ``` -```ruby -# Ruby code with syntax highlighting -GitHubPages::Dependencies.gems.each do |gem, version| - s.add_dependency(gem, "= #{version}") -end +### Example + +To start service containers based on the `docker-compose.yml` file in your current directory, just call `compose.up` like this: + +```javascript +compose.upAll({ cwd: path.join(__dirname), log: true }) + .then( + () => { console.log('done')}, + err => { console.log('something went wrong:', err.message)} + ); ``` -#### [](#header-4)Header 4 - -* This is an unordered list following a header. -* This is an unordered list following a header. -* This is an unordered list following a header. - -##### [](#header-5)Header 5 - -1. This is an ordered list following a header. -2. This is an ordered list following a header. -3. This is an ordered list following a header. - -###### [](#header-6)Header 6 - -| head1 | head two | three | -|:-------------|:------------------|:------| -| ok | good swedish fish | nice | -| out of stock | good and plenty | nice | -| ok | good `oreos` | hmm | -| ok | good `zoute` drop | yumm | - -### There's a horizontal rule below this. - -* * * - -### Here is an unordered list: - -* Item foo -* Item bar -* Item baz -* Item zip - -### And an ordered list: - -1. Item one -1. Item two -1. Item three -1. Item four - -### And a nested list: - -- level 1 item - - level 2 item - - level 2 item - - level 3 item - - level 3 item -- level 1 item - - level 2 item - - level 2 item - - level 2 item -- level 1 item - - level 2 item - - level 2 item -- level 1 item - -### Nesting an ol in ul in an ol - -- level 1 item (ul) - 1. level 2 item (ol) - 1. level 2 item (ol) - - level 3 item (ul) - - level 3 item (ul) -- level 1 item (ul) - 1. level 2 item (ol) - 1. level 2 item (ol) - - level 3 item (ul) - - level 3 item (ul) - 1. level 4 item (ol) - 1. level 4 item (ol) - - level 3 item (ul) - - level 3 item (ul) -- level 1 item (ul) - -### And a task list - -- [ ] Hello, this is a TODO item -- [ ] Hello, this is another TODO item -- [x] Goodbye, this item is done - -### Small image - -![](https://assets-cdn.github.com/images/icons/emoji/octocat.png) - -### Large image - -![](https://guides.github.com/activities/hello-world/branching.png) - - -### Definition lists can be used with HTML syntax. - -
-
Name
-
Godzilla
-
Born
-
1952
-
Birthplace
-
Japan
-
Color
-
Green
-
- -``` -Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. +To execute command inside a running container +```javascript +compose.exec('node', 'npm install', { cwd: path.join(__dirname) }) ``` +### 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) +* `[composeOptions] string[]|Array