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.

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.