balena-cli deploy without docker installation


I’m trying to deploy the following docker-compose file to a multi-container application in BalenaCloud:

version: '2'
    image: redis:5.0.5

When I try this on a pc that does have Docker installed everything works as expected, but when I do this on a pc that does not have docker installed it tells me that Docker is needed.

In the example below I used a fake Docker sock to simulate that Docker is not installed.
When I remove the fake Docker sock everything is fine.

C:\Users\bencl\Desktop\mytest>balena -v

C:\Users\bencl\Desktop\mytest>balena deploy mytest --debug --docker myFakeDockerSock
[debug] new argv=[C:\Program Files\balena-cli\client\bin\node.exe,C:\Program Files\balena-cli\client\bin\run,deploy,mytest,--docker,myFakeDockerSock] length=6
[Debug]   Parsing input...
Docker seems to be unavailable. Is it installed and running?
Error: connect ENOENT myFakeDockerSock

For further help or support, visit:

C:\Users\bencl\Desktop\mytest>balena deploy mytest --debug
[debug] new argv=[C:\Program Files\balena-cli\client\bin\node.exe,C:\Program Files\balena-cli\client\bin\run,deploy,mytest] length=4
[Debug]   Parsing input...
[Debug]   Loading project...
[Debug]   Resolving project...
[Debug]   docker-compose.yml file found at "C:\Users\bencl\Desktop\mytest"
[Debug]   Creating project...
[Info]    Everything is up to date (use --build to force a rebuild)

It was my understanding that all image building happened in the BalenaCloud servers.
I understand that in some cases we need to build services locally, but here that is clearly not the case? This redis:5.0.5 image is available in DockerHub: Docker Hub
Even when there still is a service with “build” instead of “image”, then I would expect all building to happen in BalenaCloud?

I thought that this was similar to ACR Tasks for example. (“Build and push a single container image to a container registry on-demand, in Azure, without needing a local Docker Engine installation.”)

This is not a urgent issue, more an inquiry out of curiosity.
Thanks for your time!

Hello, in order to build on the balena build servers, you should use balena push, not balena deploy.

Yes, that’s completely true.

We have all our images already built and pushed to a private docker registry.
In the release step we just use a docker-compose file that references the images in the registry and some registry secrets.
When running balena deploywe don’t need to build anything anymore (in our use case) so we thought that we didn’t need to have docker installed in the release pipeline.
I realize now that that’s not the use case for everyone.