Device is not updated with multicontainer services

Issue:

I am able to build and deploy multicontainer service to resin.io, but the device will not update to the new multicontainer application. I am running ‘Resin OS 2.13.1+rev1’ and I am using Resin.io Starter application type. It should be noted that the “Logs” view on the device does not show anything and the “Terminal” view cannot connect. The device is online and a previous service single container application is working as expected and can connect to the webpage on port 80.

I am running staged update, and I force the device to a specific release and got the info text that states that the device is not updated yet. Which is correct, but nothing is happening.

What am I missing?

The multicontainer solution looking like this:

version: '2.1'
services:
  web8080:
    build:
      context: ./web8080
    ports:
      - '8080:80'
  web80:
    build:
      context: ./web80
    ports:
      - '80:80'
    depends_on:
      - web8080

And dockerfiles like this:

FROM library/httpd

Hi @aliasbits

Multi container requires resinOS > v2.12.0 so you’re good there, however the containers should still use resin’s base images, as you can see in the https://github.com/resin-io-projects/multicontainer-getting-started/ example (see https://github.com/resin-io-projects/multicontainer-getting-started/blob/master/frontend/Dockerfile.template for example which uses FROM resin/%%RESIN_MACHINE_NAME%%-node:7-slim – generic library/httpd docker images will fail).

Hi Chris

Got confused as a single image container using library/httpd worked as expected. I will swap to some applicable resin base image.

Hi Chris

I have just tried the multi-container example.

Build and deploy works fine. The 3 services are shown in the release in the dashboard, but the release is never downloaded or installed. The device just keeps running the previous single container application.

Note that I build and deploy from my desktop via resin-cli and do not use resin servers to build the containers. I use staged release and force update the device to the new releases when ready. The device is force updated to the multi container release, but nothing happens. I am running on an intel processor and using intel-nuc type.

Ah yeah, unfortunately our local flow doesn’t support multi container yet, so I suspect that’s what’s bugging out here. Could you give the git push flow a try and see if that works?

Hi Chris

It does not make any difference if the services are build via git push flow instead of ‘resin build’/‘resin deploy’ flow. The device will not update to the multi container solution.

The attached images show the device not updating and the two multi container services, one build via git push flow and one build via resin cli.

Hey @aliasbits – could you share the dashboard link so we can take a look please

How?

It’s just the link in your web browser, it’ll look something like
https://dashboard.resin.io/devices/{longHash}/summary

You can DM me the link or send it to chrisc@resin.io – thanks!

Hi,

Have you moved this device between applications/fleets or something like that? Or did you just create a new application and then a new device.

This might help us narrow down any issues with the device.

Thanks

Regards,
ZubairLK

Hi

The device has been placed in the same application called Software_Development for a month.

The hardware has been installed several times, hence several devices has existed on the same hardware in this time frame.

The device name has changed by every installation, but at some of the installations, the device name has been changed to a unique device name.

The current state of the device has been stable for 1-1½ week. Only performed container updates and power cycles of the device during the last 1-1½ week.

Please note that I work through businesses proxy, sometime on VPN and sometime on direct internet access.

Please note that some of the installation has been by custom ResinOS builds. Some has been by use of Resin images, but with kernel module loading experiments.

The current device state is running on an official ResinOS

Hi,

I just wanted to update you; we are working on a fix for this currently and hope to get it out to live in the coming days.

Have you, in the past, pinned this application to a specific release at all?

Thanks.

Rich

Hi Rich

Sounds cool.

Yes I have experimented with pinned commit for the application.

For the devices i have used staged release where a specific release is selected for the device.

I have not used rolling update for several weeks. I have made a python application to control the devices and in this application I select specifically which release a given device must have, hence no rolling update.

Hi Rich

Any status on the Multicontainer service update?

I want to migrate to a multicontainer application but this thread worries me. Sounds like you Balena guys have identified a problem, though I am not sure exactly which use case this concerns.

Does this mean that the combination multicontainer + pinned releases doesn’t work?

Hey @krix,

There was indeed an issue in Balena but, as far as I understand, it has been already fixed by now, so there shouldn’t be any worries!