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 same shellhttpd folder.

  • dashboard: A Docker container image created from the grafana folder.

  • mosquitto: The mosquitto Docker container image from hub.docker.com.