# Docker compose

Docker uses Dockerfiles to specify what an image should look like. It uses something called "compose" files to allow you to specify multiple containers that can talk to each other.

{% tabs %}
{% tab title="Exercise" %}

* Add a section to the "docker-compose.yml" file which specifies a Mongo DB image. Name it "mongo"
* Link that image with the "start" image
* Run the image
* Notice that both a "start" image and a "mongo" image are created
  {% endtab %}

{% tab title="Answer" %}

* Open the "docker-compose.yml" file in the "start" project
* Add a new section under "services" called "mongo"

```
version: '2.1'

services:
  start:
    image: start
    build: .
    environment:
      NODE_ENV: production
    ports:
      - 3000:3000

  mongo:
```

* Specify the "mongo" image to be pulled down from Dockerhub

```
version: '2.1'

services:
  start:
    image: start
    build: .
    environment:
      NODE_ENV: production
    ports:
      - 3000:3000

  mongo:
    image: 'mongo'
```

* Add a line just below line 10 that links the "start" container with the "mongo" container

```
version: '2.1'

services:
  start:
    image: start
    build: .
    environment:
      NODE_ENV: production
    ports:
      - 3000:3000
    links:
      - mongo

  mongo:
    image: 'mongo'
```

* Open the Command Palette(**Cmd/Ctrl + Shift + P**)
* Select "Docker: Compose Up"

![](https://1151923643-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LlvtEHKkq5bvzPq1pJ4%2F-Lm6AZcBldO9D1ZxI2KQ%2F-Lm5s6eeWLLLOAqQMUew%2Fimage.png?alt=media\&token=301b1b3d-9552-43c9-81b4-ab51fd7abc12)

* Select the "start" project

![](https://1151923643-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LlvtEHKkq5bvzPq1pJ4%2F-Lm6AZcBldO9D1ZxI2KQ%2F-Lm5sFx4GEmGi0_NrfQ3%2Fimage.png?alt=media\&token=7d99b72c-0739-452c-9ecb-45183b470959)

* Select the "docker-compose.yml" file from the prompt

![](https://1151923643-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LlvtEHKkq5bvzPq1pJ4%2F-Lm6AZcBldO9D1ZxI2KQ%2F-Lm5sN7_vszGtXXNYOPE%2Fimage.png?alt=media\&token=95922ffd-2926-48bf-bfad-0472ec9adbeb)

* Open the Docker Explorer view and notice that there are now two containers running

![](https://1151923643-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LlvtEHKkq5bvzPq1pJ4%2F-Lm6AZcBldO9D1ZxI2KQ%2F-Lm5tmgGlSX7IppBrQNJ%2Fimage.png?alt=media\&token=0ce443bf-3e9a-4f79-b51f-f011f2fe7186)
{% endtab %}
{% endtabs %}
