compose/docs/yml.md

111 lines
2.4 KiB
Markdown
Raw Normal View History

2014-01-27 16:03:21 +01:00
---
layout: default
title: fig.yml reference
---
fig.yml reference
=================
Each service defined in `fig.yml` must specify exactly one of `image` or `build`. Other keys are optional, and are analogous to their `docker run` command-line counterparts.
As with `docker run`, options specified in the Dockerfile (e.g. `CMD`, `EXPOSE`, `VOLUME`, `ENV`) are respected by default - you don't need to specify them again in `fig.yml`.
###image
Tag or partial image ID. Can be local or remote - Fig will attempt to pull if it doesn't exist locally.
```
2014-01-27 16:03:21 +01:00
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
```
### build
Path to a directory containing a Dockerfile. Fig will build and tag it with a generated name, and use that image thereafter.
2014-01-27 16:03:21 +01:00
```
2014-01-27 16:03:21 +01:00
build: /path/to/build/dir
```
### command
2014-01-27 16:03:21 +01:00
Override the default command.
```
2014-01-27 16:03:21 +01:00
command: bundle exec thin -p 3000
```
### links
2014-01-27 16:03:21 +01:00
Link to containers in another service. Optionally specify an alternate name for the link, which will determine how environment variables are prefixed, e.g. `db` -> `DB_1_PORT`, `db:database` -> `DATABASE_1_PORT`
```
2014-01-27 16:03:21 +01:00
links:
- db
2014-03-03 18:58:35 +01:00
- db:database
2014-01-27 16:03:21 +01:00
- redis
```
### ports
Expose ports. Either specify both ports (`HOST:CONTAINER`), or just the container port (a random host port will be chosen).
2014-01-27 16:03:21 +01:00
**Note:** When mapping ports in the `HOST:CONTAINER` format, you may experience erroneous results when using a container port lower than 60, because YAML will parse numbers in the format `xx:yy` as sexagesimal (base 60). For this reason, we recommend always explicitly specifying your port mappings as strings.
```
2014-01-27 16:03:21 +01:00
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
```
### expose
Expose ports without publishing them to the host machine - they'll only be accessible to linked services. Only the internal port can be specified.
2014-01-27 16:03:21 +01:00
```
expose:
- "3000"
- "8000"
```
### volumes
Map volumes from the host machine (`HOST:CONTAINER`).
```
2014-01-27 16:03:21 +01:00
volumes:
- cache/:/tmp/cache
```
### volumes_from
2014-01-27 16:03:21 +01:00
Mount all of the volumes from another service or container.
```
volumes_from:
- service_name
- container_name
```
### environment
Add environment variables. Environment variables with only a key are resolved to values on the host machine, which can be helpful for secret or host-specific values.
```
2014-01-27 16:03:21 +01:00
environment:
RACK_ENV: development
SESSION_SECRET:
2014-01-27 16:03:21 +01:00
```
### net
Networking mode. Use the same values as the docker client `--net` parameter.
```
net: "host"
```