Docker Compose YAML¶
docker-compose.yml
defines the services, networks, and volumes for multi-container Docker apps.
All the parameters you have used with docker run
you can specify in docker-compose.yml
.
Then, with a single command, create and start all the services with your configurations.
In the following example, we will launch a single image, but keep in mind that a docker-compose.yml
can specify multiple images.
Tip
For more information, see the Compose File Version 3 Reference
Move the default docker-compose.yml
from shellhttpd.disabled
to your folder:
mv ../shellhttpd.disabled/docker-compose.yml .
Review the docker-compose.yml
file:
cat docker-compose.yml
docker-compose.yml:
version: '3.2'
services:
httpd:
image: hub.foundries.io/<factory>/shellhttpd:latest
restart: always
ports:
- 8080:${PORT-8080}
environment:
MSG: "${MSG-Hello world}"
Most of the parameters were already used in the previous commands. The only thing to change is the image parameter.
In the next tutorial, you will build and deploy with FoundriesFactory®, where hub.foundries.io
will be necessary.
As you are still developing locally, edit the image parameter to use the image and tag from the previous steps, shellhttpd:1.0
:
gedit docker-compose.yml
docker-compose.yml:
version: '3.2'
services:
httpd:
# image: hub.foundries.io/<factory>/shellhttpd:latest
image: shellhttpd:1.0
restart: always
ports:
- 8080:${PORT-8080}
environment:
MSG: "${MSG-Hello world}"
Notice that the MSG variable is configured to use Hello world
as default.
To run your docker-compose
application, execute the docker-compose up --detach
command.
docker-compose up --detach
Using --detach
or -d
runs containers in the background.
To verify the running containers:
docker ps
Example Output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbc969a5487d shellhttpd:1.0 "/usr/local/bin/http…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->8080/tcp shellhttpd_httpd_1
Test the container with curl
:
curl 127.0.0.1:8080
Example Output:
Hello world