[PATCH v2 06/13] recipes-containers/images: add app-container-mosquitto
Tim Orling <[email protected]> Mon, 6 Jul 2026 10:12:41 -0700
| Newsgroups | org.yoctoproject.lists.meta-virtualization |
|---|---|
| Message-ID | <f31bea9b4352294d132525cbf4894afa142ccfe3.1783356922.git.tim.orling@konsulko.com> |
Add OCI container image recipe for the Eclipse Mosquitto MQTT broker. The image uses multi-layer mode with separate base and mosquitto layers, exposes standard MQTT (1883) and WebSocket (9001) ports, and launches mosquitto with its default config file as the entrypoint. Inherit container-nonroot-user to run as 'nonroot' with UID 65532. Inherit container-volatile-fixup to fix 'log' and 'tmp' in /var/volatile. Inherit container-dev-mode to optionally run as UID '0' root user and provide a shell. Relies on image-oci to auto-derive IMAGE_INSTALL from OCI_LAYERS packages: layers. Signed-off-by: Tim Orling <[email protected]> --- .../images/app-container-mosquitto.bb | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 recipes-containers/images/app-container-mosquitto.bb diff --git a/recipes-containers/images/app-container-mosquitto.bb b/recipes-containers/images/app-container-mosquitto.bb new file mode 100644 index 00000000..9a74dcd8 --- /dev/null +++ b/recipes-containers/images/app-container-mosquitto.bb @@ -0,0 +1,43 @@ +SUMMARY = "Mosquitto MQTT broker container image" +DESCRIPTION = "OCI container running the Eclipse Mosquitto MQTT broker \ +with standard MQTT (1883) and WebSocket (9001) listeners enabled." +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +# Multi-layer mode: create explicit layers instead of single rootfs layer +OCI_LAYER_MODE = "multi" + +# Optional 'dev' mode: +# - adds a shell to the container +# - adds python3-pip to the python layer (enables `pip install` at runtime) +# - runs the container as root (UID 0) so pip can write to site-packages +# Enable with: PACKAGECONFIG:pn-app-container-python = "dev" +PACKAGECONFIG ??= "" +PACKAGECONFIG[dev] = "" +inherit container-dev-mode + +# Define layers: each layer contains specific packages +# Format: "name:type:content" where content uses + as delimiter for multiple items +OCI_LAYERS = "\ + base:packages:base-files+base-passwd+netbase \ + ${@bb.utils.contains('PACKAGECONFIG', 'dev', 'shell:packages:${CONTAINER_SHELL}', '', d)} \ + mosquitto:packages:mosquitto \ +" + +IMAGE_FSTYPES = "container oci" +inherit image +inherit image-oci +inherit container-nonroot-user +inherit container-volatile-fixup + +IMAGE_FEATURES = "" +IMAGE_LINGUAS = "" +NO_RECOMMENDATIONS = "1" + +# Allow build with or without a specific kernel +IMAGE_CONTAINER_NO_DUMMY = "1" + +OCI_IMAGE_ENTRYPOINT = "${sbindir}/mosquitto" +OCI_IMAGE_ENTRYPOINT_ARGS = "-c '${sysconfdir}/mosquitto/mosquitto.conf'" +OCI_IMAGE_PORTS = "1883/tcp 9001/tcp" +OCI_IMAGE_TAG = "latest" -- 2.54.0