<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/recipes-demo/images, branch container-cross-install</title>
<subtitle>Mirror of git.yoctoproject.org/meta-virtualization</subtitle>
<id>https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install</id>
<link rel='self' href='https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=container-cross-install'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/'/>
<updated>2026-01-21T23:00:26+00:00</updated>
<entry>
<title>image-oci: add multi-layer OCI image support with OCI_LAYERS</title>
<updated>2026-01-21T23:00:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-14T20:58:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=24c604854c6ffe79ac7973e333b2df7f7f82ddd9'/>
<id>urn:sha1:24c604854c6ffe79ac7973e333b2df7f7f82ddd9</id>
<content type='text'>
Add support for creating multi-layer OCI images with explicit layer
definitions via OCI_LAYERS variable. This enables fine-grained control
over container layer composition.

New variables:
- OCI_LAYER_MODE: Set to "multi" for explicit layer definitions
- OCI_LAYERS: Define layers as "name:type:content" entries
  - packages: Install specific packages in a layer
  - directories: Copy directories from IMAGE_ROOTFS
  - files: Copy specific files from IMAGE_ROOTFS

Package installation uses Yocto's package manager classes (RpmPM,
OpkgPM) for consistency with do_rootfs, rather than calling dnf/opkg
directly.

Example usage:
  OCI_LAYER_MODE = "multi"
  OCI_LAYERS = "\
      base:packages:base-files+base-passwd+netbase \
      shell:packages:busybox \
      app:packages:curl \
  "

This creates a 3-layer OCI image with discrete base, shell, and app
layers that can be shared and cached independently.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>recipes: add multi-layer OCI example recipes</title>
<updated>2026-01-21T23:00:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-14T04:47:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f83a83eb3979e3bc671190650731acf8a5b9ecd3'/>
<id>urn:sha1:f83a83eb3979e3bc671190650731acf8a5b9ecd3</id>
<content type='text'>
Add example recipes demonstrating multi-layer OCI image building:

alpine-oci-base_3.19.bb:
  - Fetches Alpine 3.19 from Docker Hub using container-bundle
  - Uses CONTAINER_BUNDLE_DEPLOY for use as OCI_BASE_IMAGE source
  - Pinned digest for reproducible builds

app-container-alpine.bb:
  - Demonstrates external base image usage
  - Layers Yocto packages (busybox) on top of Alpine
  - Uses OCI_IMAGE_CMD for Docker-like behavior

app-container-layered.bb:
  - Demonstrates local base image usage
  - Layers Yocto packages on top of container-base
  - Uses OCI_IMAGE_CMD for Docker-like behavior

Both app containers produce 2-layer OCI images where the base layer
is shared, reducing storage and transfer costs.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>container-bundle: add package-based container bundling support</title>
<updated>2026-01-21T23:00:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-01-01T17:14:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=92efc22c26b15380350bce7d968740142ae948eb'/>
<id>urn:sha1:92efc22c26b15380350bce7d968740142ae948eb</id>
<content type='text'>
This class creates installable packages that bundle pre-processed
container images. When installed via IMAGE_INSTALL, containers are
automatically merged into the target image's container storage.

Component relationships for bundling a local container:

  1. Application Recipe (builds the software)
     recipes-demo/myapp/myapp_1.0.bb
     - Compiles application binaries
     - Creates installable package (myapp)

  2. Container Image Recipe (creates OCI image containing the app)
     recipes-demo/images/myapp-container.bb
     - inherit image image-oci
     - IMAGE_INSTALL = "myapp"
     - Produces: ${DEPLOY_DIR_IMAGE}/myapp-container-latest-oci/

  3. Bundle Recipe (packages container images for deployment)
     recipes-demo/bundles/my-bundle_1.0.bb
     - inherit container-bundle
     - CONTAINER_BUNDLES = "myapp-container:autostart"
     - Creates installable package with OCI data

Flow: application recipe -&gt; container image recipe -&gt; bundle recipe
      -&gt; IMAGE_INSTALL in host image -&gt; container deployed on target

Usage:
    inherit container-bundle
    CONTAINER_BUNDLES = "myapp-container:autostart redis-container"

CONTAINER_BUNDLES format: source[:autostart-policy]
  - source: Container IMAGE recipe name or remote registry URL
  - autostart-policy: Optional (autostart, always, unless-stopped, on-failure)

Features:
- Auto-generates dependencies on container image recipes (do_image_complete)
- Supports remote containers via skopeo (requires CONTAINER_DIGESTS)
- Runtime auto-detected from CONTAINER_PROFILE (docker/podman)
- Produces OCI directories and metadata for container-cross-install

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>app-container-curl: add space for IMAGE_INSTALL:append</title>
<updated>2024-11-12T23:14:10+00:00</updated>
<author>
<name>Chris Laplante</name>
<email>chris.laplante@agilent.com</email>
</author>
<published>2024-11-06T01:11:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f38e46c8d285f7666354eb52458480f01803f456'/>
<id>urn:sha1:f38e46c8d285f7666354eb52458480f01803f456</id>
<content type='text'>
Signed-off-by: Chris Laplante &lt;chris.laplante@agilent.com&gt;
Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>app-container: add space for IMAGE_INSTALL:append</title>
<updated>2024-11-12T23:14:05+00:00</updated>
<author>
<name>Chris Laplante</name>
<email>chris.laplante@agilent.com</email>
</author>
<published>2024-11-06T01:11:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=071c585f69b2db865140d1299112a916baf26cf3'/>
<id>urn:sha1:071c585f69b2db865140d1299112a916baf26cf3</id>
<content type='text'>
Signed-off-by: Chris Laplante &lt;chris.laplante@agilent.com&gt;
Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>app-container: temporarily copy contens of .inc file to recipe</title>
<updated>2022-09-12T20:45:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2022-09-12T20:22:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=f20516d0fd0ddfb9e2f4d2bdb11ea40ccf575d49'/>
<id>urn:sha1:f20516d0fd0ddfb9e2f4d2bdb11ea40ccf575d49</id>
<content type='text'>
Variable overrides have stopped working when this specific .inc
file are used. To keep the demo working, we temporarily copy the
exact contents of the .inc file into the recipe .. and all is well.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>demo: add a sample container that just contains curl</title>
<updated>2022-09-12T20:45:26+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2022-09-12T20:18:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=c5ed5aa1e5860f2f8122d3c11388856bf43083b0'/>
<id>urn:sha1:c5ed5aa1e5860f2f8122d3c11388856bf43083b0</id>
<content type='text'>
This is useful for demonstrating how entry points and functionality
can be delivered in containers

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>demo: add flask and k3s deployment files</title>
<updated>2021-12-13T20:59:11+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2021-11-25T16:53:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=6fe326b68012b0eae5c951ab21d55b0ccfda84f9'/>
<id>urn:sha1:6fe326b68012b0eae5c951ab21d55b0ccfda84f9</id>
<content type='text'>
To enable demonstrations of application container builds, and deployment
to k*s clusters, we introduce a simple recipes-demo/ structure with a
sample flask application and deployment yaml.

i.e. ensure that "helloworld-flask-deploy" is installed on your image,
and then:

 % kubectl apply -f /etc/flask-app.yaml
 % kubectl label pods zeddii-pod new-label=yoctorule
 % kubectl expose pod zeddii-pod  --port=9000  --target-port=9000 --type=LoadBalancer --name=my-service

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
</feed>
