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.
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