Balena deploy download different architecture

Hi, I have encountered a very disturbing issue. After deploying a new release, my device decided to download a different architecture for one of the services.

My docker-compose contains 3 services:

  1. MQTT broker. Image: eclipse-mosquitto:1.6
  2. Two internals services. The images have been built before executing ‘balena deploy <my_fleet>’.

After the device has been upgraded, the MQTT broker was not up. (I needed to understand it from the logs of our two services because the UI shows everything is running). I have executed ‘balena inspect <mqtt_image>’ and the architecture is “amd64” and not “arm64” as expected.

  • I run the deployment on Linux Ubuntu 20.04.
  • My device is RPi4 64bit.
  • The fleet is configured as
  • Balena CLI version 14.5.0

My docker compose

version: "2"

volumes:
  resin-data:

services:
  ipc-broker:
    image: eclipse-mosquitto:1.6
    ports:
      - 1883:1883
    restart: always

  service01:
    image: url-to-service01
    volumes:
      - 'resin-data:/data'
    ports:
      - 8080:8080
    depends_on:
      - ipc-broker
    restart: always
    labels:
      io.balena.features.supervisor-api: '1'
    environment:
      - RELEASE_VERSION=1.0.15
      - SCHEMA_VERSION=1.0.9

  service02:
    image: url-to-service02
    environment:
      - 'DBUS_SYSTEM_BUS_ADDRESS=unix:path=/host/run/dbus/system_bus_socket'
      - 'DISPLAY=:0'
      - 'BROKER_ADDRESS=mqtt://0.0.0.0:1883'
    labels:
      io.balena.features.dbus: '1'
    restart: always
    privileged: true
    network_mode: host
    depends_on:
      - ipc-broker

I have a couple of issues:

  1. Why there isn’t a way to see the architecture of the image from your UI. Searched on the release page and device page.
  2. Why the UI of the devices is showing “Running” when the service is failing to start in the beginning.

I have upgraded the balena CLI to the latest version (16.6.3) and I have encountered the same issue.

I only success to run the service by configuring the image of the broker to: “arm64v8/eclipse-mosquitto:1.6”.
The downside with that approach is I can’t use this docker-compose on a different architecture device.

BTW, I managed to upgrade the damaged version only after I manually removed the broker container from the CLI of the device.

Hello @YehonatanElentok

could you please confirm the device type of your fleet on balenaCloud?

Actually you can find more information of the eclipse mosquitto image here Docker

Let us know if we can help you more!

Hi. Thanks for your response.
My fleet device type is RPi4. The fleet has the logo of RPi, and the architecture is aarch64.
When I configured the device to local mode and pushed the same version (the previous docker-compose version, when the docker image of the broker was eclipse-mosquitto:1.6), the device downloaded the correct architecture of the broker image.

My assumption is (The UI needs to provide additional information about the architecture of the services) this happened because I deployed my version on an X86 PC. My two other services only had arm architecture in our docker registry.