kolla/docker/docker-compose/README.md
Daneyon Hansen ce8d945e6a Implements: blueprint rabbit-container-set
This patch provides an initial implementation of docker-compose
(i.e. fig). docker-compose runs in a container. The container is
only instantiated when invoked to manage a container set
(i.e. docker-compose up) and then stopped when the command is
finished executing.

Change-Id: I797f06bed773192129b57aae9824d4f97c70b3ab
2015-02-19 01:14:46 +00:00

108 lines
3.1 KiB
Markdown

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
```