|
|
@@ -12,79 +12,33 @@ parent="smn_compose_ref"
|
|
|
|
|
|
# Compose file reference
|
|
|
|
|
|
-The compose file is a [YAML](http://yaml.org/) file where all the top level
|
|
|
-keys are the name of a service, and the values are the service definition.
|
|
|
-The default path for a compose file is `./docker-compose.yml`.
|
|
|
+The Compose file is a [YAML](http://yaml.org/) file defining
|
|
|
+[services](#service-configuration-reference),
|
|
|
+[networks](#network-configuration-reference) and
|
|
|
+[volumes](#volume-configuration-reference).
|
|
|
+The default path for a Compose file is `./docker-compose.yml`.
|
|
|
|
|
|
-Each service defined in `docker-compose.yml` must specify exactly one of
|
|
|
-`image` or `build`. Other keys are optional, and are analogous to their
|
|
|
-`docker run` command-line counterparts.
|
|
|
+A service definition contains configuration which will be applied to each
|
|
|
+container started for that service, much like passing command-line parameters to
|
|
|
+`docker run`. Likewise, network and volume definitions are analogous to
|
|
|
+`docker network create` and `docker volume create`.
|
|
|
|
|
|
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 `docker-compose.yml`.
|
|
|
|
|
|
-## Versioning
|
|
|
-
|
|
|
-It is possible to use different versions of the `compose.yml` format.
|
|
|
-Below are the formats currently supported by compose.
|
|
|
-
|
|
|
-
|
|
|
-### Version 1
|
|
|
-
|
|
|
-Compose files that do not declare a version are considered "version 1". In
|
|
|
-those files, all the [services](#service-configuration-reference) are declared
|
|
|
-at the root of the document.
|
|
|
-
|
|
|
-Version 1 files do not support the declaration of
|
|
|
-named [volumes](#volume-configuration-reference) or
|
|
|
-[build arguments](#args).
|
|
|
-
|
|
|
-Example:
|
|
|
-
|
|
|
- web:
|
|
|
- build: .
|
|
|
- ports:
|
|
|
- - "5000:5000"
|
|
|
- volumes:
|
|
|
- - .:/code
|
|
|
- - logvolume01:/var/log
|
|
|
- links:
|
|
|
- - redis
|
|
|
- redis:
|
|
|
- image: redis
|
|
|
-
|
|
|
-
|
|
|
-### Version 2
|
|
|
-
|
|
|
-Compose files using the version 2 syntax must indicate the version number at
|
|
|
-the root of the document. All [services](#service-configuration-reference)
|
|
|
-must be declared under the `services` key.
|
|
|
-Named [volumes](#volume-configuration-reference) must be declared under the
|
|
|
-`volumes` key.
|
|
|
-
|
|
|
-Example:
|
|
|
-
|
|
|
- version: 2
|
|
|
- services:
|
|
|
- web:
|
|
|
- build: .
|
|
|
- ports:
|
|
|
- - "5000:5000"
|
|
|
- volumes:
|
|
|
- - .:/code
|
|
|
- - logvolume01:/var/log
|
|
|
- links:
|
|
|
- - redis
|
|
|
- redis:
|
|
|
- image: redis
|
|
|
- volumes:
|
|
|
- logvolume01:
|
|
|
- driver: default
|
|
|
+You can use environment variables in configuration values with a Bash-like
|
|
|
+`${VARIABLE}` syntax - see [variable substitution](#variable-substitution) for
|
|
|
+full details.
|
|
|
|
|
|
|
|
|
## Service configuration reference
|
|
|
|
|
|
+> **Note:** There are two versions of the Compose file format – version 1 (the
|
|
|
+> legacy format, which does not support volumes or networks) and version 2 (the
|
|
|
+> most up-to-date). For more information, see the [Versioning](#versioning)
|
|
|
+> section.
|
|
|
+
|
|
|
This section contains a list of all configuration options supported by a service
|
|
|
definition.
|
|
|
|
|
|
@@ -92,28 +46,30 @@ definition.
|
|
|
|
|
|
Configuration options that are applied at build time.
|
|
|
|
|
|
-In version 1 this must be given as a string representing the context.
|
|
|
+`build` can be specified either as a string containing a path to the build
|
|
|
+context, or an object with the path specified under [context](#context) and
|
|
|
+optionally [dockerfile](#dockerfile) and [args](#args).
|
|
|
|
|
|
- build: .
|
|
|
+ build: ./dir
|
|
|
|
|
|
-In version 2 this can alternatively be given as an object with extra options.
|
|
|
+ build:
|
|
|
+ context: ./dir
|
|
|
+ dockerfile: Dockerfile-alternate
|
|
|
+ args:
|
|
|
+ buildno: 1
|
|
|
|
|
|
- version: 2
|
|
|
- services:
|
|
|
- web:
|
|
|
- build: .
|
|
|
-
|
|
|
- version: 2
|
|
|
- services:
|
|
|
- web:
|
|
|
- build:
|
|
|
- context: .
|
|
|
- dockerfile: Dockerfile-alternate
|
|
|
- args:
|
|
|
- buildno: 1
|
|
|
+> **Note**: In the [version 1 file format](#version-1), `build` is different in
|
|
|
+> two ways:
|
|
|
+>
|
|
|
+> - Only the string form (`build: .`) is allowed - not the object form.
|
|
|
+> - Using `build` together with `image` is not allowed. Attempting to do so
|
|
|
+> results in an error.
|
|
|
|
|
|
#### context
|
|
|
|
|
|
+> [Version 2 file format](#version-2) only. In version 1, just use
|
|
|
+> [build](#build).
|
|
|
+
|
|
|
Either a path to a directory containing a Dockerfile, or a url to a git repository.
|
|
|
|
|
|
When the value supplied is a relative path, it is interpreted as relative to the
|
|
|
@@ -122,29 +78,34 @@ sent to the Docker daemon.
|
|
|
|
|
|
Compose will build and tag it with a generated name, and use that image thereafter.
|
|
|
|
|
|
- build: /path/to/build/dir
|
|
|
-
|
|
|
build:
|
|
|
- context: /path/to/build/dir
|
|
|
-
|
|
|
-Using `context` together with `image` is not allowed. Attempting to do so results in
|
|
|
-an error.
|
|
|
+ context: ./dir
|
|
|
|
|
|
#### dockerfile
|
|
|
|
|
|
Alternate Dockerfile.
|
|
|
|
|
|
Compose will use an alternate file to build with. A build path must also be
|
|
|
-specified using the `build` key.
|
|
|
+specified.
|
|
|
|
|
|
build:
|
|
|
- context: /path/to/build/dir
|
|
|
+ context: .
|
|
|
dockerfile: Dockerfile-alternate
|
|
|
|
|
|
-Using `dockerfile` together with `image` is not allowed. Attempting to do so results in an error.
|
|
|
+> **Note**: In the [version 1 file format](#version-1), `dockerfile` is
|
|
|
+> different in two ways:
|
|
|
+>
|
|
|
+> - It appears alongside `build`, not as a sub-option:
|
|
|
+>
|
|
|
+> build: .
|
|
|
+> dockerfile: Dockerfile-alternate
|
|
|
+> - Using `dockerfile` together with `image` is not allowed. Attempting to do
|
|
|
+> so results in an error.
|
|
|
|
|
|
#### args
|
|
|
|
|
|
+> [Version 2 file format](#version-2) only.
|
|
|
+
|
|
|
Add build arguments. You can use either an array or a dictionary. Any
|
|
|
boolean values; true, false, yes, no, need to be enclosed in quotes to ensure
|
|
|
they are not converted to True or False by the YML parser.
|
|
|
@@ -152,8 +113,6 @@ they are not converted to True or False by the YML parser.
|
|
|
Build arguments with only a key are resolved to their environment value on the
|
|
|
machine Compose is running on.
|
|
|
|
|
|
-> **Note:** Introduced in version 2 of the compose file format.
|
|
|
-
|
|
|
build:
|
|
|
args:
|
|
|
buildno: 1
|
|
|
@@ -376,6 +335,9 @@ It's recommended that you use reverse-DNS notation to prevent your labels from c
|
|
|
|
|
|
### links
|
|
|
|
|
|
+> [Version 1 file format](#version-1) only. In version 2 files, use
|
|
|
+> [networking](networking.md) for communication between containers.
|
|
|
+
|
|
|
Link to containers in another service. Either specify both the service name and
|
|
|
the link alias (`SERVICE:ALIAS`), or just the service name (which will also be
|
|
|
used for the alias).
|
|
|
@@ -397,13 +359,15 @@ reference](env.md) for details.
|
|
|
|
|
|
### logging
|
|
|
|
|
|
-Logging configuration for the service. This configuration replaces the previous
|
|
|
-`log_driver` and `log_opt` keys.
|
|
|
+> [Version 2 file format](#version-2) only. In version 1, use
|
|
|
+> [log_driver](#log_driver) and [log_opt](#log_opt).
|
|
|
+
|
|
|
+Logging configuration for the service.
|
|
|
|
|
|
logging:
|
|
|
- driver: log_driver
|
|
|
- options:
|
|
|
- syslog-address: "tcp://192.168.0.42:123"
|
|
|
+ driver: syslog
|
|
|
+ options:
|
|
|
+ syslog-address: "tcp://192.168.0.42:123"
|
|
|
|
|
|
The `driver` name specifies a logging driver for the service's
|
|
|
containers, as with the ``--log-driver`` option for docker run
|
|
|
@@ -421,15 +385,36 @@ The default value is json-file.
|
|
|
|
|
|
Specify logging options for the logging driver with the ``options`` key, as with the ``--log-opt`` option for `docker run`.
|
|
|
|
|
|
-
|
|
|
-Logging options are key value pairs. An example of `syslog` options:
|
|
|
+Logging options are key-value pairs. An example of `syslog` options:
|
|
|
|
|
|
driver: "syslog"
|
|
|
options:
|
|
|
syslog-address: "tcp://192.168.0.42:123"
|
|
|
|
|
|
+### log_driver
|
|
|
+
|
|
|
+> [Version 1 file format](#version-1) only. In version 2, use
|
|
|
+> [logging](#logging).
|
|
|
+
|
|
|
+Specify a log driver. The default is `json-file`.
|
|
|
+
|
|
|
+ log_driver: syslog
|
|
|
+
|
|
|
+### log_opt
|
|
|
+
|
|
|
+> [Version 1 file format](#version-1) only. In version 2, use
|
|
|
+> [logging](#logging).
|
|
|
+
|
|
|
+Specify logging options as key-value pairs. An example of `syslog` options:
|
|
|
+
|
|
|
+ log_opt:
|
|
|
+ syslog-address: "tcp://192.168.0.42:123"
|
|
|
+
|
|
|
### net
|
|
|
|
|
|
+> [Version 1 file format](#version-1) only. In version 2, use
|
|
|
+> [networks](#networks).
|
|
|
+
|
|
|
Networking mode. Use the same values as the docker client `--net` parameter.
|
|
|
|
|
|
net: "bridge"
|
|
|
@@ -437,6 +422,22 @@ Networking mode. Use the same values as the docker client `--net` parameter.
|
|
|
net: "container:[name or id]"
|
|
|
net: "host"
|
|
|
|
|
|
+### networks
|
|
|
+
|
|
|
+> [Version 2 file format](#version-2) only. In version 1, use [net](#net).
|
|
|
+
|
|
|
+Networks to join, referencing entries under the
|
|
|
+[top-level `networks` key](#network-configuration-reference).
|
|
|
+
|
|
|
+ networks:
|
|
|
+ - some-network
|
|
|
+ - other-network
|
|
|
+
|
|
|
+The values `bridge`, `host` and `none` can also be used, and are equivalent to
|
|
|
+`net: "bridge"`, `net: "host"` or `net: "none"` in version 1.
|
|
|
+
|
|
|
+There is no equivalent to `net: "container:[name or id]"`.
|
|
|
+
|
|
|
### pid
|
|
|
|
|
|
pid: "host"
|
|
|
@@ -487,24 +488,37 @@ limit as an integer or soft/hard limits as a mapping.
|
|
|
|
|
|
### volumes, volume\_driver
|
|
|
|
|
|
-Mount paths as volumes, optionally specifying a path on the host machine
|
|
|
-(`HOST:CONTAINER`), or an access mode (`HOST:CONTAINER:ro`).
|
|
|
-
|
|
|
- volumes:
|
|
|
- - /var/lib/mysql
|
|
|
- - ./cache:/tmp/cache
|
|
|
- - ~/configs:/etc/configs/:ro
|
|
|
+Mount paths or named volumes, optionally specifying a path on the host machine
|
|
|
+(`HOST:CONTAINER`), or an access mode (`HOST:CONTAINER:ro`). Named volumes can
|
|
|
+be specified with the
|
|
|
+[top-level `volumes` key](#volume-configuration-reference), but this is
|
|
|
+optional - the Docker Engine will create the volume if it doesn't exist.
|
|
|
|
|
|
You can mount a relative path on the host, which will expand relative to
|
|
|
the directory of the Compose configuration file being used. Relative paths
|
|
|
should always begin with `.` or `..`.
|
|
|
|
|
|
+ volumes:
|
|
|
+ # Just specify a path and let the Engine create a volume
|
|
|
+ - /var/lib/mysql
|
|
|
+
|
|
|
+ # Specify an absolute path mapping
|
|
|
+ - /opt/data:/var/lib/mysql
|
|
|
+
|
|
|
+ # Path on the host, relative to the Compose file
|
|
|
+ - ./cache:/tmp/cache
|
|
|
+
|
|
|
+ # User-relative path
|
|
|
+ - ~/configs:/etc/configs/:ro
|
|
|
+
|
|
|
+ # Named volume
|
|
|
+ - datavolume:/var/lib/mysql
|
|
|
+
|
|
|
If you use a volume name (instead of a volume path), you may also specify
|
|
|
a `volume_driver`.
|
|
|
|
|
|
volume_driver: mydriver
|
|
|
|
|
|
-
|
|
|
> Note: No path expansion will be done if you have also specified a
|
|
|
> `volume_driver`.
|
|
|
|
|
|
@@ -519,8 +533,18 @@ specifying read-only access(``ro``) or read-write(``rw``).
|
|
|
|
|
|
volumes_from:
|
|
|
- service_name
|
|
|
- - container_name
|
|
|
- - service_name:rw
|
|
|
+ - service_name:ro
|
|
|
+ - container:container_name
|
|
|
+ - container:container_name:rw
|
|
|
+
|
|
|
+> **Note:** The `container:...` formats are only supported in the
|
|
|
+> [version 2 file format](#version-2). In [version 1](#version-1), you can use
|
|
|
+> container names without marking them as such:
|
|
|
+>
|
|
|
+> - service_name
|
|
|
+> - service_name:ro
|
|
|
+> - container_name
|
|
|
+> - container_name:rw
|
|
|
|
|
|
### cpu\_shares, cpu\_quota, cpuset, domainname, hostname, ipc, mac\_address, mem\_limit, memswap\_limit, privileged, read\_only, restart, stdin\_open, tty, user, working\_dir
|
|
|
|
|
|
@@ -562,20 +586,296 @@ subcommand documentation for more information.
|
|
|
### driver
|
|
|
|
|
|
Specify which volume driver should be used for this volume. Defaults to
|
|
|
-`local`. An exception will be raised if the driver is not available.
|
|
|
+`local`. The Docker Engine will return an error if the driver is not available.
|
|
|
|
|
|
driver: foobar
|
|
|
|
|
|
### driver_opts
|
|
|
|
|
|
Specify a list of options as key-value pairs to pass to the driver for this
|
|
|
-volume. Those options are driver dependent - consult the driver's
|
|
|
+volume. Those options are driver-dependent - consult the driver's
|
|
|
documentation for more information. Optional.
|
|
|
|
|
|
driver_opts:
|
|
|
foo: "bar"
|
|
|
baz: 1
|
|
|
|
|
|
+## external
|
|
|
+
|
|
|
+If set to `true`, specifies that this volume has been created outside of
|
|
|
+Compose.
|
|
|
+
|
|
|
+In the example below, instead of attemping to create a volume called
|
|
|
+`[projectname]_data`, Compose will look for an existing volume simply
|
|
|
+called `data` and mount it into the `db` service's containers.
|
|
|
+
|
|
|
+ version: 2
|
|
|
+
|
|
|
+ services:
|
|
|
+ db:
|
|
|
+ image: postgres
|
|
|
+ volumes:
|
|
|
+ - data:/var/lib/postgres/data
|
|
|
+
|
|
|
+ volumes:
|
|
|
+ data:
|
|
|
+ external: true
|
|
|
+
|
|
|
+You can also specify the name of the volume separately from the name used to
|
|
|
+refer to it within the Compose file:
|
|
|
+
|
|
|
+ volumes
|
|
|
+ data:
|
|
|
+ external:
|
|
|
+ name: actual-name-of-volume
|
|
|
+
|
|
|
+
|
|
|
+## Network configuration reference
|
|
|
+
|
|
|
+The top-level `networks` key lets you specify networks to be created. For a full
|
|
|
+explanation of Compose's use of Docker networking features, see the
|
|
|
+[Networking guide](networking.md).
|
|
|
+
|
|
|
+### driver
|
|
|
+
|
|
|
+Specify which driver should be used for this network.
|
|
|
+
|
|
|
+The default driver depends on how the Docker Engine you're using is configured,
|
|
|
+but in most instances it will be `bridge` on a single host and `overlay` on a
|
|
|
+Swarm.
|
|
|
+
|
|
|
+The Docker Engine will return an error if the driver is not available.
|
|
|
+
|
|
|
+ driver: overlay
|
|
|
+
|
|
|
+### driver_opts
|
|
|
+
|
|
|
+Specify a list of options as key-value pairs to pass to the driver for this
|
|
|
+network. Those options are driver-dependent - consult the driver's
|
|
|
+documentation for more information. Optional.
|
|
|
+
|
|
|
+ driver_opts:
|
|
|
+ foo: "bar"
|
|
|
+ baz: 1
|
|
|
+
|
|
|
+### ipam
|
|
|
+
|
|
|
+Specify custom IPAM config. This is an object with several properties, each of
|
|
|
+which is optional:
|
|
|
+
|
|
|
+- `driver`: Custom IPAM driver, instead of the default.
|
|
|
+- `config`: A list with zero or more config blocks, each containing any of
|
|
|
+ the following keys:
|
|
|
+ - `subnet`: Subnet in CIDR format that represents a network segment
|
|
|
+ - `ip_range`: Range of IPs from which to allocate container IPs
|
|
|
+ - `gateway`: IPv4 or IPv6 gateway for the master subnet
|
|
|
+ - `aux_addresses`: Auxiliary IPv4 or IPv6 addresses used by Network driver,
|
|
|
+ as a mapping from hostname to IP
|
|
|
+
|
|
|
+A full example:
|
|
|
+
|
|
|
+ ipam:
|
|
|
+ driver: default
|
|
|
+ config:
|
|
|
+ - subnet: 172.28.0.0/16
|
|
|
+ ip_range: 172.28.5.0/24
|
|
|
+ gateway: 172.28.5.254
|
|
|
+ aux_addresses:
|
|
|
+ host1: 172.28.1.5
|
|
|
+ host2: 172.28.1.6
|
|
|
+ host3: 172.28.1.7
|
|
|
+
|
|
|
+### external
|
|
|
+
|
|
|
+If set to `true`, specifies that this network has been created outside of
|
|
|
+Compose.
|
|
|
+
|
|
|
+In the example below, `proxy` is the gateway to the outside world. Instead of
|
|
|
+attemping to create a network called `[projectname]_outside`, Compose will
|
|
|
+look for an existing network simply called `outside` and connect the `proxy`
|
|
|
+service's containers to it.
|
|
|
+
|
|
|
+ version: 2
|
|
|
+
|
|
|
+ services:
|
|
|
+ proxy:
|
|
|
+ build: ./proxy
|
|
|
+ networks:
|
|
|
+ - outside
|
|
|
+ - default
|
|
|
+ app:
|
|
|
+ build: ./app
|
|
|
+ networks:
|
|
|
+ - default
|
|
|
+
|
|
|
+ networks
|
|
|
+ outside:
|
|
|
+ external: true
|
|
|
+
|
|
|
+You can also specify the name of the network separately from the name used to
|
|
|
+refer to it within the Compose file:
|
|
|
+
|
|
|
+ networks
|
|
|
+ outside:
|
|
|
+ external:
|
|
|
+ name: actual-name-of-network
|
|
|
+
|
|
|
+
|
|
|
+## Versioning
|
|
|
+
|
|
|
+There are two versions of the Compose file format:
|
|
|
+
|
|
|
+- Version 1, the legacy format. This is specified by omitting a `version` key at
|
|
|
+ the root of the YAML.
|
|
|
+- Version 2, the recommended format. This is specified with a `version: 2` entry
|
|
|
+ at the root of the YAML.
|
|
|
+
|
|
|
+To move your project from version 1 to 2, see the [Upgrading](#upgrading)
|
|
|
+section.
|
|
|
+
|
|
|
+> **Note:** If you're using
|
|
|
+> [multiple Compose files](extends.md#different-environments) or
|
|
|
+> [extending services](extends.md#extending-services), each file must be of the
|
|
|
+> same version - you cannot mix version 1 and 2 in a single project.
|
|
|
+
|
|
|
+Several things differ depending on which version you use:
|
|
|
+
|
|
|
+- The structure and permitted configuration keys
|
|
|
+- The minimum Docker Engine version you must be running
|
|
|
+- Compose's behaviour with regards to networking
|
|
|
+
|
|
|
+These differences are explained below.
|
|
|
+
|
|
|
+
|
|
|
+### Version 1
|
|
|
+
|
|
|
+Compose files that do not declare a version are considered "version 1". In
|
|
|
+those files, all the [services](#service-configuration-reference) are declared
|
|
|
+at the root of the document.
|
|
|
+
|
|
|
+Version 1 is supported by **Compose up to 1.6.x**. It will be deprecated in a
|
|
|
+future Compose release.
|
|
|
+
|
|
|
+Version 1 files cannot declare named
|
|
|
+[volumes](#volume-configuration-reference), [networks](networking.md) or
|
|
|
+[build arguments](#args). They *can*, however, define [links](#links).
|
|
|
+
|
|
|
+Example:
|
|
|
+
|
|
|
+ web:
|
|
|
+ build: .
|
|
|
+ ports:
|
|
|
+ - "5000:5000"
|
|
|
+ volumes:
|
|
|
+ - .:/code
|
|
|
+ links:
|
|
|
+ - redis
|
|
|
+ redis:
|
|
|
+ image: redis
|
|
|
+
|
|
|
+
|
|
|
+### Version 2
|
|
|
+
|
|
|
+Compose files using the version 2 syntax must indicate the version number at
|
|
|
+the root of the document. All [services](#service-configuration-reference)
|
|
|
+must be declared under the `services` key.
|
|
|
+
|
|
|
+Version 2 files are supported by **Compose 1.6.0+** and require a Docker Engine
|
|
|
+of version **1.10.0+**.
|
|
|
+
|
|
|
+Named [volumes](#volume-configuration-reference) can be declared under the
|
|
|
+`volumes` key, and [networks](#network-configuration-reference) can be declared
|
|
|
+under the `networks` key.
|
|
|
+
|
|
|
+You cannot define links when using version 2. Instead, you should use
|
|
|
+[networking](networking.md) for communication between containers. In most cases,
|
|
|
+this will involve less configuration than links.
|
|
|
+
|
|
|
+Simple example:
|
|
|
+
|
|
|
+ version: 2
|
|
|
+ services:
|
|
|
+ web:
|
|
|
+ build: .
|
|
|
+ ports:
|
|
|
+ - "5000:5000"
|
|
|
+ volumes:
|
|
|
+ - .:/code
|
|
|
+ redis:
|
|
|
+ image: redis
|
|
|
+
|
|
|
+A more extended example, defining volumes and networks:
|
|
|
+
|
|
|
+ version: 2
|
|
|
+ services:
|
|
|
+ web:
|
|
|
+ build: .
|
|
|
+ ports:
|
|
|
+ - "5000:5000"
|
|
|
+ volumes:
|
|
|
+ - .:/code
|
|
|
+ networks:
|
|
|
+ - front
|
|
|
+ - back
|
|
|
+ redis:
|
|
|
+ image: redis
|
|
|
+ volumes:
|
|
|
+ - data:/var/lib/redis
|
|
|
+ networks:
|
|
|
+ - back
|
|
|
+ volumes:
|
|
|
+ data:
|
|
|
+ driver: local
|
|
|
+ networks:
|
|
|
+ front:
|
|
|
+ driver: bridge
|
|
|
+ back:
|
|
|
+ driver: bridge
|
|
|
+
|
|
|
+
|
|
|
+### Upgrading
|
|
|
+
|
|
|
+In the majority of cases, moving from version 1 to 2 is a very simple process:
|
|
|
+
|
|
|
+1. Indent the whole file by one level and put a `services:` key at the top.
|
|
|
+2. Add a `version: 2` line at the top of the file.
|
|
|
+3. Delete all `links` entries.
|
|
|
+
|
|
|
+It's more complicated if you're using particular configuration features:
|
|
|
+
|
|
|
+- `dockerfile`: This now lives under the `build` key:
|
|
|
+
|
|
|
+ build:
|
|
|
+ context: .
|
|
|
+ dockerfile: Dockerfile-alternate
|
|
|
+
|
|
|
+- `log_driver`, `log_opt`: These now live under the `logging` key:
|
|
|
+
|
|
|
+ logging:
|
|
|
+ driver: syslog
|
|
|
+ options:
|
|
|
+ syslog-address: "tcp://192.168.0.42:123"
|
|
|
+
|
|
|
+- `links` with aliases: If you've defined a link with an alias such as
|
|
|
+ `myservice:db`, there's currently no equivalent to this in version 2. You
|
|
|
+ will have to refer to the service using its name (in this example,
|
|
|
+ `myservice`).
|
|
|
+
|
|
|
+- `external_links`: Links are deprecated, so you should use
|
|
|
+ [external networks](networking.md#using-externally-created-networks) to
|
|
|
+ communicate with containers outside the app.
|
|
|
+
|
|
|
+- `net`: If you're using `host`, `bridge` or `none`, this is now replaced by
|
|
|
+ `networks`:
|
|
|
+
|
|
|
+ net: host -> networks: ["host"]
|
|
|
+ net: bridge -> networks: ["bridge"]
|
|
|
+ net: none -> networks: ["none"]
|
|
|
+
|
|
|
+ If you're using `net: "container:<name>"`, there is no equivalent to this in
|
|
|
+ version 2 - you should use [Docker networks](networking.md) for
|
|
|
+ communication instead.
|
|
|
+
|
|
|
|
|
|
## Variable substitution
|
|
|
|