Docker Compose

Docker Compose is a method for creating containers through configuration files.


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


CategoryRicottone

Docker/Compose (last edited 2023-04-04 18:09:26 by DominicRicottone)