Compose File Reference
The Compose file is a YAML file defining services, networks and volumes. The default path for a Compose file is ./docker-compose.yml.
A service definition contains configuration which will be applied to each container started for that service, much like passing command-line parameters to hyper run. Likewise, network and volume definitions are analogous to hyper network create
and hyper volume create
.
As with hyper run
, options specified in the Docker Image(e.g., CMD, EXPOSE, VOLUME, ENV) are respected by default - you don’t need to specify them again in docker-compose.yml.
You can use environment variables in configuration values with a Bash-like ${VARIABLE} syntax - see variable substitution for full details.
Service configuration reference
Note: Hyper compose only supports two versions of the Compose file format – version 1 (the legacy format, which does not support volumes or networks) and version 2.
command
Override the default command.
The command can also be a list:
container_name
Specify a custom container name, rather than a generated default name.
Because Hyper container names must be unique, you cannot scale a service beyond 1 container if you have specified a custom name. Attempting to do so results in an error.
depends_on
Express dependency between services, which has two effects:
compose up
will start services in dependency order. In the following example, db and redis will be started before web.compose up SERVICE
will automatically include SERVICE’s dependencies. In the following example,hyper compose up web
will also create and start db and redis.Simple example:
Note: depends_on will not wait for db and redis to be “ready” before starting web - only until they have been started. If you need to wait for a service to be ready, see Controlling startup order for more on this problem and strategies for solving it.
entrypoint
Override the default entrypoint.
The entrypoint can also be a list:
env_file
Add environment variables from a file. Only accept a list. If you have specified a Compose file with compose -f FILE
, paths in env_file are relative to the directory that file is in. Environment variables specified in environment override these values.
Compose expects each line in an env file to be in VAR=VAL format. Lines beginning with #
(i.e. comments) are ignored, as are blank lines.
environment
Add environment variables. 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. Environment variables with only a key are resolved to their values on the machine Compose is running on, which can be helpful for secret or host-specific values.
extends
Extend another service, in the current file or another, optionally overriding configuration. You can use extends on any service together with other configuration keys. The extends value must be a dictionary defined with a required service and an optional file key.
The service the name of the service being extended, for example web or database. The file is the location of a Compose configuration file defining that service. If you omit the file Compose looks for the service configuration in the current file. The file value can be an absolute or relative path. If you specify a relative path, Compose treats it as relative to the location of the current file. You can extend a service that itself extends another. You can extend indefinitely. Compose does not support circular references and compose returns an error if it encounters one.
external_links
Link to containers started outside this docker-compose.yml
or even outside of Compose, especially for containers that provide shared or common services. external_links
follow semantics similar to links
when specifying both the container name and the link alias (CONTAINER:ALIAS
).
Note: If you’re using the version 2 file format, the externally-created containers must be connected to at least one of the same networks as the service which is linking to them.
image
Specify the image to start the container from. Can either be a repository/tag or a partial image ID.
If the image does not exist, Compose
attempts to pull it, unless you have also specified build, in which case it builds it using the specified options and tags it with the specified tag.
labels
Add metadata to containers using Hyper labels. You can use either an array or a dictionary. It’s recommended that you use reverse-DNS notation to prevent your labels from conflicting with those used by other software.
links
Link to containers in another service. Either specify both the service name and a link alias (SERVICE:ALIAS
), or just the service name.
Containers for the linked service will be reachable at a hostname identical to the alias, or the service name if no alias was specified. Links also express dependency between services in the same way as depends_on, so they determine the order of service startup.
volumes
Mount paths or named volumes. For version 2 files, named volumes can be specified with the top-level volumes key, a public http/https source file, or a public git repository. When using version 1, the Hyper will create the named volume automatically if it doesn’t exist.
Note: You can not specify local directory or files to init the volume like docker compose.
fip
Attach an allocated floating IP to a (running) container, each container can have only one floating IP. It will only accept a single string:
The reserved keyword auto
tries to use free (existing) FIPs, before allocating more.
Note: the
auto
keyword only works with Hyper CLI.
size
The size for each container, it will only accept a single string. Available size is s1, s2, s3, s4, m1, m2, m3, l1, l2 and l3. For more details and price, you can refer the doc.
noauto_volume
This option tells Hyper service not to create new volumes for VOLUME
sections in the container image. If not specified, compose will automatically create volumes for each VOLUME
section in the container image.
security_groups
This option tells compose to add security groups to the container. A security group acts as a virtual firewall that controls the traffic for one or more containers.
Hyper compose vs Docker compose
Docker | Hyper | Note | |
build | x | - | |
cap_add | x | - | Add container capabilities. |
cap_drop | x | - | Drop container capabilities. |
command | x | x | Override the default command. |
cgroup_parent | x | - | Specify an optional parent cgroup for the container. |
container_name | x | x | Specify a custom container name, rather than a generated default name. |
devices | x | - | List of device mappings. |
depends_on | x | x | Express dependency between services. |
dns | x | - | Custom DNS servers. Can be a single value or a list. |
dns_search | x | - | Custom DNS search domains. Can be a single value or a list. |
tmpfs | x | - | Mount a temporary file system inside the container. |
entrypoint | x | x | Override the default entrypoint. |
env_file | x | x | Add environment variables from a file. |
environment | x | x | Add environment variables. |
expose | x | x | Expose ports without publishing them to the host machine. (support later) |
extends | x | x | Extend another service, in the current file or another, optionally overriding configuration. |
external_links | x | x | Link to containers started outside this docker-compose.yml or even outside of Compose |
extra_hosts | x | - | Add hostname mappings. |
image | x | x | Specify the image to start the container from. |
labels | x | x | Add metadata to containers using Docker labels. |
links | x | x | Link to containers in another service. |
logging | x | - | Logging configuration for the service. |
log_driver | x | - | Specify a log driver. |
log_opt | x | - | Specify logging options as key-value pairs. |
net | x | - | [v1 only]network mode |
network_mode | x | - | [v2 only]network mode |
networks | x | - | [v2 only]Networks to join. |
aliases | x | - | Aliases (alternative hostnames) for this service on the network. |
ipv4_address | x | - | Specify a static IP address for containers for this service when joining the network. |
ipv6_address | x | - | Specify a static IP address for containers for this service when joining the network. |
pid | x | - | Sets the PID mode to the host PID mode. |
ports | x | x | Expose ports. |
security_opt | x | - | Override the default labeling scheme for each container. |
stop_signal | x | x | Sets an alternative signal to stop the container. |
ulimits | x | - | Override the default ulimits for a container. |
volumes | x | x | Mount paths or named volumes. |
volume_driver | x | - | |
volume_from | x | - | Mount all of the volumes from another service or container |
cpu_shares | x | - | cpu_shares: 73 |
cpu_quota | x | - | cpu_quota: 50000 |
cpuset | x | - | cpuset: 0,1 |
domainname | x | x | domainname: foo.com |
hostname | x | x | hostname: boo |
ipc | x | - | |
mac_address | x | - | mac_address: 02:42:ac:11:65:43 |
mem_limit | x | - | |
memswap_limit | x | - | |
privileged | x | - | |
read_only | x | - | |
restart | x | x | restart: always |
shm_size | x | - | |
stdin_open | x | x | |
tty | x | x | |
user | x | - | |
working_dir | x | x | |
size | - | x | instance size of Hyper container |
fip | - | x | floating IP |
security_groups | - | x | Security Groups |
noauto_volume | - | x | Do not auto create volume |
networks | x | - |
Last updated