Differences between revisions 5 and 11 (spanning 6 versions)
Revision 5 as of 2021-11-18 09:21:06
Size: 1591
Comment:
Revision 11 as of 2023-04-04 18:09:26
Size: 2301
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from DockerCompose
Line 4: 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 12: Line 11:
== Volumes == == Installation ==
Line 14: 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 16: 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 19: Line 28:
container_name: CONTAINER container_name: my-container
Line 23: Line 32:
    image: IMAGE     image: my-image
Line 31: Line 40:
The short syntax is as follows: The ''short'' syntax is:
Line 34: Line 43:
container_name: CONTAINER container_name: my-container
Line 38: Line 47:
    image: IMAGE     image: my-image
Line 41: 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 47: Line 119:
== Port Management == == See also ==
Line 49: 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 compose 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 compose reference documentation


CategoryRicottone

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