ce8d945e6a
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
108 lines
3.1 KiB
Markdown
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
|
|
```
|