Converting Docker Apps to Compose Apps¶
Factories created before the introduction of compose apps must be converted to use compose apps.
Enabling Compose Apps in a Factory¶
The factory’s definition file in ci-scripts needs to be updated to enable compose apps:
git clone https://source.foundries.io/factories/<factory>/ci-scripts
Edit factory-config.yml
so that containers.params
includes
DOCKER_COMPOSE_APP: "1"
for both build types. For example:
containers:
params:
DOCKER_COMPOSE_APP: "1"
lmp:
params:
DOCKER_COMPOSE_APP: "1"
Once enabled all new container.git changes will:
Continue to build docker apps for each .dockerapp file in the repository
Convert .dockerapp files into docker-compose and produce compose apps
Top-level directories containing a docker-compose.yml will be treated only as a compose app.
With DOCKER_COMPOSE_APP=1
, all new devices will be configured to use
compose apps when registered using lmp-device-register.
Converting Existing Devices¶
Existing devices can be converted to use compose apps using fioctl:
fioctl devices config updates --compose-apps <device-name>
If the device is using persistent volume(s) relative to its installed location then setting compose-dir can be used to not lose data:
fioctl devices config updates --compose-apps --compose-dir /var/sota/docker-apps <device-name>
Completing The Migration¶
After all Factory devices are converted to compose apps, the .dockerapp files in containers.git can be converted to compose app style applications. For example:
# shellhttpd.dockerapp
version: 0.1.1
name: shellhttpd
description: Dummy shell script that runs an httpd server using netcat
---
version: '3.2'
services:
httpd:
image: hub.foundries.io/andy-corp/shellhttpd:latest
restart: always
ports:
- 8080:${PORT}
environment:
MSG: "${MSG}"
---
PORT: 8080
MSG: Hello world
Can become:
# shellhttpd/docker-compose.yml
version: '3.2'
services:
httpd:
image: hub.foundries.io/andy-corp/shellhttpd:latest
restart: always
ports:
- 8080:${PORT-8080}
environment:
MSG: "${MSG-Hello world}"