Docker Compose
Docker Compose is a method for creating containers through configuration files.
Contents
Installation
Most Linux distributions offer a docker-compose package.
Compose Files
Volumes
Docker compose supports two methods for creating volumes and bind mounts. The long syntax, which is recommended, is:
container_name: my-container version: 0.1 services: web: image: my-image volumes: - type: bind source: relative/source/path target: /absolute/target/path read only: true
The short syntax is:
container_name: my-container version: 0.1 services: web: image: my-image volumes: - relative/source/path:/absolute/target/path:ro
Publishing
Docker compose supports two methods to expose a container to the network. The short syntax is:
container_name: my-container version: 0.1 services: web: image: my-image ports: - 127.0.0.1:80:8080/tcp
If the host IP is not set, the service will listen on all interfaces. If the protocol is not specified, both TCP and UDP connections are accepted. So it can be expressed simply as:
container_name: my-container version: 0.1 services: web: image: my-image ports: - 80:8080
The long syntax is:
container_name: my-container version: 0.1 services: web: image: my-image ports: - target: 80 host_ip: 127.0.0.1 published: "8080" protocol: tcp mode: host
In this syntax, published is a string because it can be expressed as a range (like "8000-9000").
Environment Variables
To pass in an environment variable from the local environment to a Docker container, use:
container_name: my-container version: 0.1 services: web: image: my-image environment: - VARIABLE1 - VARIABLE2
See also
Docker compose reference documentation