Differences between revisions 4 and 10 (spanning 6 versions)
Revision 4 as of 2020-07-09 03:27:50
Size: 1551
Comment:
Revision 10 as of 2023-04-04 18:08:47
Size: 2302
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
'''Docker Compose''' is a method for creating containers through configuration files and the Docker daemon. Everything that Docker Compose does, you can also do through interactive execution. As such, this page runs in parallel to the [[DockerContainersSetup|docker container setup page]]. '''Docker Compose''' is a method for creating containers through configuration files.
Line 11: Line 11:
== Volumes == == Installation ==
Line 13: Line 13:
Docker supports two methods for binding volumes, hereafter referred to as the 'long syntax' and the 'short syntax'. Docker Compose supports two parallel methods. Upstream recommendation is to use the long syntax. Most [[Linux]] distributions offer a `docker-compose` package.
Line 15: Line 15:
The long syntax is as follows: ----



== Compose Files ==



=== Volumes ===

Docker compose supports two methods for creating [[Docker/Volumes|volumes]] and [[Docker/BindMounts|bind mounts]]. The ''long'' syntax, which is recommended, is:
Line 18: Line 28:
container_name: CONTAINER container_name: my-container
Line 22: Line 32:
    image: IMAGE     image: my-image
Line 30: Line 40:
The short syntax is as follows: The ''short'' syntax is:
Line 33: Line 43:
container_name: CONTAINER container_name: my-container
Line 37: Line 47:
    image: IMAGE     image: my-image
Line 40: Line 50:
}}}



=== 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 [[Protocols/IP|IP]] is not set, the service will listen on all interfaces. If the protocol is not specified, both [[Protocols/TCP|TCP]] and [[Protocols/UDP|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
Line 46: Line 119:
== Port Management == == See also ==
Line 48: Line 121:
To give a container access to ports, use:

{{{
container_name: CONTAINER
version: 0.1
services:
  web:
    image: IMAGE
    ports:
      - 8888:8888
}}}

----



== Environment Variables ==

To pass in an environment variable from the local environment to a Docker container, use:

{{{
container_name: CONTAINER
version: 0.1
services:
  web:
    image: IMAGE
    environment:
      - VARIABLE1
      - VARIABLE2
}}}
[[https://docs.docker.com/compose/compose-file/|Docker com,pose reference documentation]]

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 com,pose reference documentation


CategoryRicottone

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