mirror of
https://github.com/docker/compose.git
synced 2025-07-31 01:24:15 +02:00
plum -> fig
This commit is contained in:
parent
4d35d47969
commit
0cafdc9c6c
38
README.md
38
README.md
@ -1,9 +1,9 @@
|
|||||||
Plum
|
Fig
|
||||||
====
|
====
|
||||||
|
|
||||||
**WARNING**: This is a work in progress and probably won't work yet. Feedback welcome.
|
**WARNING**: This is a work in progress and probably won't work yet. Feedback welcome.
|
||||||
|
|
||||||
Plum is tool for defining and running application environments with Docker. It uses a simple, version-controllable YAML configuration file that looks something like this:
|
Fig is tool for defining and running application environments with Docker. It uses a simple, version-controllable YAML configuration file that looks something like this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
web:
|
web:
|
||||||
@ -20,13 +20,13 @@ Installing
|
|||||||
----------
|
----------
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo pip install plum
|
$ sudo pip install fig
|
||||||
```
|
```
|
||||||
|
|
||||||
Defining your app
|
Defining your app
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Put a `plum.yml` in your app's directory. Each top-level key defines a "service", such as a web app, database or cache. For each service, Plum will start a Docker container, so at minimum it needs to know what image to use.
|
Put a `fig.yml` in your app's directory. Each top-level key defines a "service", such as a web app, database or cache. For each service, Fig will start a Docker container, so at minimum it needs to know what image to use.
|
||||||
|
|
||||||
The simplest way to get started is to just give it an image name:
|
The simplest way to get started is to just give it an image name:
|
||||||
|
|
||||||
@ -35,26 +35,26 @@ db:
|
|||||||
image: orchardup/postgresql
|
image: orchardup/postgresql
|
||||||
```
|
```
|
||||||
|
|
||||||
You've now given Plum the minimal amount of configuration it needs to run:
|
You've now given Fig the minimal amount of configuration it needs to run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ plum start
|
$ fig start
|
||||||
Pulling image orchardup/postgresql...
|
Pulling image orchardup/postgresql...
|
||||||
Starting myapp_db_1...
|
Starting myapp_db_1...
|
||||||
myapp_db_1 is running at 127.0.0.1:45678
|
myapp_db_1 is running at 127.0.0.1:45678
|
||||||
<...output from postgresql server...>
|
<...output from postgresql server...>
|
||||||
```
|
```
|
||||||
|
|
||||||
For each service you've defined, Plum will start a Docker container with the specified image, building or pulling it if necessary. You now have a PostgreSQL server running at `127.0.0.1:45678`.
|
For each service you've defined, Fig will start a Docker container with the specified image, building or pulling it if necessary. You now have a PostgreSQL server running at `127.0.0.1:45678`.
|
||||||
|
|
||||||
By default, `plum start` will run until each container has shut down, and relay their output to the terminal. To run in the background instead, pass the `-d` flag:
|
By default, `fig start` will run until each container has shut down, and relay their output to the terminal. To run in the background instead, pass the `-d` flag:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ plum start -d
|
$ fig start -d
|
||||||
Starting myapp_db_1... done
|
Starting myapp_db_1... done
|
||||||
myapp_db_1 is running at 127.0.0.1:45678
|
myapp_db_1 is running at 127.0.0.1:45678
|
||||||
|
|
||||||
$ plum ps
|
$ fig ps
|
||||||
Name State Ports
|
Name State Ports
|
||||||
------------------------------------
|
------------------------------------
|
||||||
myapp_db_1 Up 5432->45678/tcp
|
myapp_db_1 Up 5432->45678/tcp
|
||||||
@ -62,7 +62,7 @@ myapp_db_1 Up 5432->45678/tcp
|
|||||||
|
|
||||||
### Building services
|
### Building services
|
||||||
|
|
||||||
Plum can automatically build images for you if your service specifies a directory with a `Dockerfile` in it (or a Git URL, as per the `docker build` command).
|
Fig can automatically build images for you if your service specifies a directory with a `Dockerfile` in it (or a Git URL, as per the `docker build` command).
|
||||||
|
|
||||||
This example will build an image with `app.py` inside it:
|
This example will build an image with `app.py` inside it:
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ This example will build an image with `app.py` inside it:
|
|||||||
print "Hello world!"
|
print "Hello world!"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### plum.yml
|
#### fig.yml
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
web:
|
web:
|
||||||
@ -91,7 +91,7 @@ web:
|
|||||||
|
|
||||||
### Getting your code in
|
### Getting your code in
|
||||||
|
|
||||||
If you want to work on an application being run by Plum, you probably don't want to have to rebuild your image every time you make a change. To solve this, you can share the directory with the container using a volume so the changes are reflected immediately:
|
If you want to work on an application being run by Fig, you probably don't want to have to rebuild your image every time you make a change. To solve this, you can share the directory with the container using a volume so the changes are reflected immediately:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
web:
|
web:
|
||||||
@ -118,8 +118,8 @@ web:
|
|||||||
This will pass an environment variable called `MYAPP_DB_1_PORT` into the web container, whose value will look like `tcp://172.17.0.4:45678`. Your web app's code can use that to connect to the database. To see all of the environment variables available, run `env` inside a container:
|
This will pass an environment variable called `MYAPP_DB_1_PORT` into the web container, whose value will look like `tcp://172.17.0.4:45678`. Your web app's code can use that to connect to the database. To see all of the environment variables available, run `env` inside a container:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ plum start -d db
|
$ fig start -d db
|
||||||
$ plum run web env
|
$ fig run web env
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -152,12 +152,12 @@ web:
|
|||||||
Running a one-off command
|
Running a one-off command
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
If you want to run a management command, use `plum run` to start a one-off container:
|
If you want to run a management command, use `fig run` to start a one-off container:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ plum run db createdb myapp_development
|
$ fig run db createdb myapp_development
|
||||||
$ plum run web rake db:migrate
|
$ fig run web rake db:migrate
|
||||||
$ plum run web bash
|
$ fig run web bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ class Command(DocoptCommand):
|
|||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def project(self):
|
def project(self):
|
||||||
config = yaml.load(open('plum.yml'))
|
config = yaml.load(open('fig.yml'))
|
||||||
return Project.from_config(self.project_name, config, self.client)
|
return Project.from_config(self.project_name, config, self.client)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
@ -62,8 +62,8 @@ class TopLevelCommand(Command):
|
|||||||
""".
|
""".
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
plum [options] [COMMAND] [ARGS...]
|
fig [options] [COMMAND] [ARGS...]
|
||||||
plum -h|--help
|
fig -h|--help
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--verbose Show more output
|
--verbose Show more output
|
||||||
@ -82,7 +82,7 @@ class TopLevelCommand(Command):
|
|||||||
"""
|
"""
|
||||||
def docopt_options(self):
|
def docopt_options(self):
|
||||||
options = super(TopLevelCommand, self).docopt_options()
|
options = super(TopLevelCommand, self).docopt_options()
|
||||||
options['version'] = "plum %s" % __version__
|
options['version'] = "fig %s" % __version__
|
||||||
return options
|
return options
|
||||||
|
|
||||||
def ps(self, options):
|
def ps(self, options):
|
10
setup.py
10
setup.py
@ -23,19 +23,19 @@ def find_version(*file_paths):
|
|||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='plum',
|
name='fig',
|
||||||
version=find_version("plum", "__init__.py"),
|
version=find_version("fig", "__init__.py"),
|
||||||
description='',
|
description='',
|
||||||
url='https://github.com/orchardup/plum',
|
url='https://github.com/orchardup/fig',
|
||||||
author='Orchard Laboratories Ltd.',
|
author='Orchard Laboratories Ltd.',
|
||||||
author_email='hello@orchardup.com',
|
author_email='hello@orchardup.com',
|
||||||
packages=['plum'],
|
packages=['fig'],
|
||||||
package_data={},
|
package_data={},
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
install_requires=[],
|
install_requires=[],
|
||||||
dependency_links=[],
|
dependency_links=[],
|
||||||
entry_points="""
|
entry_points="""
|
||||||
[console_scripts]
|
[console_scripts]
|
||||||
plum=plum.cli.main:main
|
fig=fig.cli.main:main
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
from plum.container import Container
|
from fig.container import Container
|
||||||
|
|
||||||
class ContainerTest(DockerClientTestCase):
|
class ContainerTest(DockerClientTestCase):
|
||||||
def test_from_ps(self):
|
def test_from_ps(self):
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from plum.project import Project
|
from fig.project import Project
|
||||||
from plum.service import Service
|
from fig.service import Service
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from plum import Service
|
from fig import Service
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from docker import Client
|
from docker import Client
|
||||||
from plum.service import Service
|
from fig.service import Service
|
||||||
import os
|
import os
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user