mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2024-12-20 14:13:08 +00:00
42c39ed36d
Change-type: patch Signed-off-by: Pablo Carranza Velez <pablo@balena.io>
68 lines
2.5 KiB
Bash
Executable File
68 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Adapted from: https://github.com/resin-os/meta-resin/blob/v2.12.5/meta-resin-common/recipes-containers/docker-disk/docker-resin-supervisor-disk/start-resin-supervisor
|
|
|
|
source /usr/sbin/resin-vars
|
|
|
|
if ! balena inspect $SUPERVISOR_IMAGE:$SUPERVISOR_TAG > /dev/null; then
|
|
balena load --input /usr/src/supervisor-image.tar
|
|
fi
|
|
|
|
if [ -f /mnt/data/apps.json ]; then
|
|
preloaded_img=$(jq --raw-output ".[0].imageId" /mnt/data/apps.json || echo "")
|
|
if [ "$preloaded_img" != "" ] && ! balena inspect $preloaded_img; then
|
|
balena pull $preloaded_img
|
|
fi
|
|
fi
|
|
|
|
EXTRA_MOUNTS=""
|
|
if [ -d /resin-supervisor/dist ]; then
|
|
EXTRA_MOUNTS="${EXTRA_MOUNTS} -v /resin-supervisor/dist:/usr/src/app/dist"
|
|
fi
|
|
if [ -d /resin-supervisor/node_modules ]; then
|
|
EXTRA_MOUNTS="${EXTRA_MOUNTS} -v /resin-supervisor/node_modules:/usr/src/app/node_modules"
|
|
fi
|
|
|
|
if [ -f /mnt/data/backup.tgz.mounted ]; then
|
|
cp /mnt/data/backup.tgz.mounted /mnt/data/backup.tgz
|
|
fi
|
|
|
|
SUPERVISOR_IMAGE_ID=$(balena inspect --format='{{.Id}}' $SUPERVISOR_IMAGE:$SUPERVISOR_TAG)
|
|
SUPERVISOR_CONTAINER_IMAGE_ID=$(balena inspect --format='{{.Image}}' resin_supervisor || echo "")
|
|
|
|
runSupervisor() {
|
|
balena rm --force resin_supervisor || true
|
|
balena run --privileged --name resin_supervisor \
|
|
--net=host \
|
|
-v /var/run/balena.sock:/var/run/balena.sock \
|
|
-v $CONFIG_PATH:/boot/config.json \
|
|
-v /mnt/data/apps.json:/boot/apps.json \
|
|
-v /resin-data/resin-supervisor:/data \
|
|
-v /proc/net/fib_trie:/mnt/fib_trie \
|
|
-v /var/log/supervisor-log:/var/log \
|
|
-v /:/mnt/root \
|
|
-e DOCKER_ROOT=/mnt/root/var/lib/docker \
|
|
-e DOCKER_SOCKET=/var/run/balena.sock \
|
|
-e BOOT_MOUNTPOINT=$BOOT_MOUNTPOINT \
|
|
-e API_ENDPOINT=$API_ENDPOINT \
|
|
-e REGISTRY_ENDPOINT=$REGISTRY_ENDPOINT \
|
|
-e MIXPANEL_TOKEN=$MIXPANEL_TOKEN \
|
|
-e DELTA_ENDPOINT=$DELTA_ENDPOINT \
|
|
-e LED_FILE=${LED_FILE} \
|
|
-e LISTEN_PORT=$LISTEN_PORT \
|
|
-e SUPERVISOR_IMAGE=${SUPERVISOR_IMAGE}:${SUPERVISOR_TAG} \
|
|
${EXTRA_MOUNTS} \
|
|
${SUPERVISOR_IMAGE}:${SUPERVISOR_TAG}
|
|
}
|
|
|
|
if [ -z "$SUPERVISOR_IMAGE_ID" ]; then
|
|
# No supervisor image exists on the device, try to pull it
|
|
systemctl start update-resin-supervisor
|
|
elif [ "$SUPERVISOR_IMAGE_ID" = "$SUPERVISOR_CONTAINER_IMAGE_ID" ]; then
|
|
# Supervisor image exists, and the current supervisor container is created from
|
|
balena start --attach resin_supervisor
|
|
else
|
|
# No supervisor container exists or there's a different supervisor image to run
|
|
runSupervisor
|
|
fi
|