Torizoncore-builder tcbuild.yaml does not update the docker-compose file on the device

Hello there,

We have been using torizoncore-builder for the development of our image which works pretty well, however when supplying the docker-compose file property it does not seem to override the default containers or upload the docker-compose file.

Our configuration:

tcbuild.yaml

input:
  easy-installer:
    local: torizon-core-docker-verdin-imx8mp-Tezi_6.2.0+build.2.tar
output:
  easy-installer:
    local: torizon-core-build.CUSTOM
    bundle:
      compose-file: docker-compose.yml

docker-compose.yml

version: "3.8"

services:
  foo:
    image: hello-world

We have confimed that ostree admin status shows the correct deployed image hash as deployed

but when we run $ less /var/sota/storage/docker-compose/docker-compose.yml still show us the default portainer weston chromium output.

What are we missing here?

Some additional information:

  • base image used is 6.2.0 without evaluation containers
  • purpose: We made a script to that uploads and builds our environment to the verdin board and ends with docker-compose up. so when we are developing we want a dummy docker-compose file in var/sota/storage our development docker will then contain the correct weston and kiosk container.
    with that said for production builds we do want to use the torizon way so we can use the torizon.io app to update our containers

Greetings @samuelous,

After you build the custom image as specified in your tcbuild.yaml how exactly do you then deploy this image to your module?

Best Regards,
Jeremias

We use the following commands

Build the image

$ torizoncore-builder build

Load the image

$ torizoncore-builder images unpack image-location

Deploy the image

$ torizoncore-builder deploy --remote $IP --remote-username torizon --remote-password torizon --reboot

I see the issue. You’re deploying via network. For techical reasons changes to the docker-compose file can’t be deployed via network with TorizonCore Builder. If you want your changes to the compose file to take effect you need to do so by using torizoncore-builder deploy to create a new image that can be installed using Toradex Easy Installer. Only in this way would your changes to the compose file actually be deployed.

Best Regards,
Jeremias

Is this on the roadmap for torizoncore-builder or can i put a feature request for it on github?
torizoncore-builder works perfectly but it is a bit confusing that it is deploying the whole unpacked image but does not copy the docker-composefile.

Well there isn’t a roadmap for this functionality currently. If you see our documentation on the deploy command this behavior is actually intended: TorizonCore Builder Tool - Commands Manual | Toradex Developer Center

The bundled application containers can not be deployed using this command when targeting a live device.

The reasons for this being technical rather than any deliberate limitation. In short, the way the deploy command works is by using OSTree to capture the changes, similar to git if you’re unfamiliar with OSTree. Now OSTree does not manage every single file on TorizonCore. Most importantly it does not manage any files in /var, which means this compose file is not managed by OSTree. This is why it does not get picked up by the deploy command.

Now all that said, I can still bring this up to our team for discussion, but I can’t promise any action will be taken here at the moment.

Best Regards,
Jeremias

2 Likes