We have this working in production. I would appreciate feedback on how to best integrate this into open-balena. I expect there a changes to be made. My bandwidth is limited, so don't expect this to go fast.
Overview of changes:
Add a docker-compose-airgapped.yml
Fix dependencies in containers such that they do not run apk add or equivalent during runtime
Add (gitlab and currently on our gitlab repo ) cicd to build all containers, rather than relying on docker compose build
Add a api-contracts container which contains the contracts github repo and bind mounts into the api container as a CONTRACTS_PRIVATE_REPO_...
Add a s3-device-types which contains a subset of the s3 bucket and pushes this into the s3 container (this is still on our repo solely for cicd ease of use, will move in here)
Fixes to the env.tmpl file used by the api container to respect a few more env set in docker-compose (e.g. DEVICE_TYPES_CACHE_LOCAL_TIMEOUT to fix a caching problem)
@thgreasi @dfunckt @cmfcruz you may want to take a look at this PR, there are some good ideas in here, which can be potentially distributed/incorporated in the relevant repos to make it all work
DRAFT This MR enables air-gapped installation of open-balena
This very much builds on https://forums.balena.io/t/supported-devices-in-open-balena/357665
We have this working in production. I would appreciate feedback on how to best integrate this into open-balena. I expect there a changes to be made. My bandwidth is limited, so don't expect this to go fast.
Overview of changes:
docker-compose-airgapped.yml
apk add
or equivalent during runtimedocker compose build
api-contracts
container which contains the contracts github repo and bind mounts into theapi
container as aCONTRACTS_PRIVATE_REPO_...
s3-device-types
which contains a subset of the s3 bucket and pushes this into the s3 container (this is still on our repo solely for cicd ease of use, will move in here)env.tmpl
file used by theapi
container to respect a few more env set in docker-compose (e.g.DEVICE_TYPES_CACHE_LOCAL_TIMEOUT
to fix a caching problem)