Docker Compose Apps
This is the file structure responsible for creating the Docker Compose App:
└── containers
└── shellhttpd
└── docker-compose.yml
The combination of a top-level directory containing docker-compose.yml
will end-up in a Docker Compose App.
The docker-compose.yml
file specifies one or more containers to run and their configurations.
In addition, the Compose App directory can contain complementary files, such as configuration files, volume data, scripts, etc.
The overall maximum allowed size of the Compose App directory is 1 GB.
Foundries.io Hub as Source
Dockerfile in the Same Folder
In shellhttpd
, the docker-compose.yml
file specifies the Docker
container image from the Foundries.io hub, hub.foundries.io/${FACTORY}/shellhttpd:latest
.
Here, the Docker container image is generated by the Dockerfile
in the shellhttpd
folder.
└── containers
└── shellhttpd
├── docker-compose.yml
└── Dockerfile
shellhttpd/docker-compose.yml
:
services:
httpd:
image: hub.foundries.io/${FACTORY}/shellhttpd:latest
Dockerfile in a Different Folder
The Docker container image can also come from a different application created in containers.git
.
This is common when you have a Docker container image used by multiple Docker Compose Apps.
For example:
└── containers
├── app
│ └── docker-compose.yml
└── grafana
└── Dockerfile
In this case, app/docker-compose.yml
looks like this:
app/docker-compose.yml
:
services:
dashboard:
image: hub.foundries.io/${FACTORY}/grafana:latest
External Hub as Source
A Docker Compose App can specify a Docker container image from an external host. A good example is images from Docker Hub.
For example:
└── containers
└── mosquitto
└── docker-compose.yml
In this case, app/docker-compose.yml
file looks like this:
app/docker-compose.yml
:
services:
mosquitto:
image: eclipse-mosquitto:1.6.12
Multiple Sources
You can can also mix the examples for both single and multiple container applications. For example:
└── containers
├── shellhttpd
│ ├── docker-compose.yml
│ └── Dockerfile
└── grafana
└── Dockerfile
In this case, shellhttpd/docker-compose.yml
specifies three different Docker container images:
app/docker-compose.yml
:
services:
httpd:
image: hub.foundries.io/${FACTORY}/shellhttpd:latest
dashboard:
image: hub.foundries.io/${FACTORY}/grafana:latest
mosquitto:
image: eclipse-mosquitto:1.6.12
httpd
: A Docker container image created from the sameshellhttpd
folder.dashboard
: A Docker container image created from thegrafana
folder.mosquitto
: The mosquitto Docker container image fromhub.docker.com
.