summaryrefslogtreecommitdiff
path: root/docker/docker-compose/README.md
blob: a63e7fbc92d712266c346af0df511e590253f7d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Docker Compose (ie Fig)
=======================

[![wercker status](https://app.wercker.com/status/d5dbac3907301c3d5ce735e2d5e95a5b/s/master "wercker status")](https://app.wercker.com/project/bykey/d5dbac3907301c3d5ce735e2d5e95a5b)

Fast, isolated development environments using Docker.

Define your app's environment with Docker so it can be reproduced anywhere:

    FROM python:2.7
    ADD . /code
    WORKDIR /code
    RUN pip install -r requirements.txt
    CMD python app.py

Define the services that make up your app so they can be run together in an isolated environment:

```yaml
web:
  build: .
  links:
   - db
  ports:
   - "8000:8000"
   - "49100:22"
db:
  image: postgres
```

(No more installing Postgres on your laptop!)

Then type `docker-compose up`, and Compose will start and run your entire app.

There are commands to:

 - start, stop and rebuild services
 - view the status of running services
 - tail running services' log output
 - run a one-off command on a service

Installation and documentation
------------------------------

Full documentation is available on [Fig's website](http://www.fig.sh/).

Use wtih Kolla
--------------

Fig (ie docker-compose) is being used to compose one or more co-located
containers know as [container sets][]. Fig is deployed as a container from the
kollaglue [repository][] to Kolla nodes using the Heat orchestration [template].
The fig container creates a host mount to communicate with the docker api over
a unix socket. The docker engine could be configured to expose the API over TCP
and may be evaluated for future use. An additional host mount to
/opt/docker-compose for fig to read the .yml file. This allows for seperating
the fig code from the data/configuration information.

Either create or modify the existing docker-compose.yml file at
/opt/docker-compose. Here is a simple example of a single container for
RabbitMQ

```
rabbitmq:
  image: kollaglue/fedora-rdo-rabbitmq
  environment:
    RABBITMQ_NODENAME: rabbit01
    RABBITMQ_USER: rabbit
    RABBITMQ_PASS: password
  net: "host"
  ports:
    - "5672:5672"
    - "15672:15672"
    - "4369:4369"
    - "25672:25672"
  privileged: true
```

Then run up to instantiate the container-set:
```
$ docker run --privileged -v /opt/docker-compose:/opt/docker-compose -v /var/run/docker.sock:/var/run/docker.sock kollaglue/fedora-rdo-docker-compose up -d
```
The -d flag tells fig to run the container set in daemonized mode.

[container sets]: https://github.com/stackforge/kolla/blob/master/specs/containerize-openstack.rst
[template]: https://github.com/stackforge/kolla/tree/master/devenv
[repository]: https://registry.hub.docker.com/u/kollaglue/fedora-rdo-docker-compose/

Contribute to Kolla Fig
-----------------------

Clone the repo:
```
git clone https://github.com/docker/fig.git
```
Set the following ENVs in the project's Dockerfile:
```
ENV COMPOSE_PROJECT_NAME kollaglue-fedora-rdo
ENV COMPOSE_FILE /opt/docker-compose/docker-compose.yml
```
Hack as needed, then build the image:
```
$ docker build -t kollaglue/kollaglue-fedora-rdo-docker-compose .
```
Push the image to the kollaglue repo
```
$ docker push kollaglue/fedora-rdo-docker-compose:latest
```