Container-Only Factories#
Container-only Factories provide a way for you to manage fleets of Arm64 or x86 devices that do not run the LmP.
Components#
App Developer: An individual or team that creates and maintains containerized applications using Docker Compose.
containers.git: The Foundries.io provided Git repository where application developers push their Docker Compose files and related resources.
CI Job: The Foundries.io provided CI job that is triggered when changes are pushed to the
containers.gitrepository. This job builds the container images, packages the application, and publishes it to the Container Registry and OTA Service.Container Registry: A storage service where built container images are stored and made available for devices to download.
OTA Service: The Over-The-Air service that manages application metadata, including available versions and update information. It interacts with devices to facilitate updates.
Database: A storage system used by the OTA Service to persist application metadata and device status information.
Device Gateway: A communication endpoint that devices use to check for updates and report their status. It acts as an intermediary between devices and the OTA Service.
fioup: The OTA update client running on the device. It checks for updates, downloads necessary container images from the Container Registry, and uses
composeappto manage the application lifecycle on the device.
App Creation And Publishing Flow#
flowchart LR
n1("App developer") -- push --> n2["contaners.git"]
n2 -- trigger --> n3["CI Job"]
n3 -- publish app and its images --> n4["Container Registry"]
n3 -- publish metadata about app --> n5["OTA Service"]
n5 -- store app metadata --> n6[("Database")]
An application developer pushes a new compose app to the
containers.gitrepository.This triggers the Foundries.io CI job that builds app’s container images, packages the app, and publishes them to Container Registry.
The CI job also generates and publishes metadata about the built and published app to the OTA Service.
The OTA Service stores the app metadata in its database.
Device Update Flow#
flowchart LR
n1("fioup<br><device>") <-- check for updates<br>upload device status --> n2["Device Gateway"]
n1 <-- fetch app blobs --> n3["Container Registry"]
n2 <-- get list of available apps</br>persist device status --> n4["OTA Service"]
The
fioupclient on the device checks for updates by communicating with the Device Gateway.If there are updates available,
fioupcan start updating apps to the specified version.The app update involves fetching the necessary container images from the Container Registry, and then using
composeappto orchestrate the update process.Once the update is complete,
fioupuploads the device status back to the Device Gateway, which in turn persists this information in the OTA Service.