# 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"

![](/files/-Lm5s6eeWLLLOAqQMUew)

* Select the "start" project

![](/files/-Lm5sFx4GEmGi0_NrfQ3)

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

![](/files/-Lm5sN7_vszGtXXNYOPE)

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

![](/files/-Lm5tmgGlSX7IppBrQNJ)
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://burkeholland.gitbook.io/vs-code-can-do-that/exercise-5-docker/docker-compose.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
