From 397b4ea536fa0264f8e1172df0a7e14247b04cdd Mon Sep 17 00:00:00 2001 From: buanet Date: Mon, 22 Jun 2020 16:24:30 +0200 Subject: [PATCH] some testing --- amd64/Dockerfile | 13 +++--- amd64/scripts/iobroker_startup.sh | 72 ++++++++++++++----------------- 2 files changed, 38 insertions(+), 47 deletions(-) diff --git a/amd64/Dockerfile b/amd64/Dockerfile index ddb8699..597c0f0 100644 --- a/amd64/Dockerfile +++ b/amd64/Dockerfile @@ -80,20 +80,17 @@ RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker \ # Setting up iobroker-user (shell and home directory) RUN chsh -s /bin/bash iobroker \ && usermod --home /opt/iobroker iobroker \ - && usermod -u 901 iobroker \ - && groupmod -g 901 iobroker + && usermod -u 1000 iobroker \ + && groupmod -g 1000 iobroker # Setting up ENVs ENV DEBIAN_FRONTEND="teletype" \ LANG="de_DE.UTF-8" \ LANGUAGE="de_DE:de" \ LC_ALL="de_DE.UTF-8" \ - PACKAGES="vi" \ - SETGID=901 \ - SETUID=901 \ + SETGID=1000 \ + SETUID=1000 \ TZ="Europe/Berlin" # Run startup-script -# ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"] -ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"] -CMD ["iob"] +ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"] diff --git a/amd64/scripts/iobroker_startup.sh b/amd64/scripts/iobroker_startup.sh index 5b335a3..9916a81 100644 --- a/amd64/scripts/iobroker_startup.sh +++ b/amd64/scripts/iobroker_startup.sh @@ -1,8 +1,5 @@ #!/bin/bash -set -e -if [ "$1" = 'iob' ]; -then # Reading ENV adminport=$IOB_ADMINPORT avahi=$AVAHI @@ -79,7 +76,7 @@ then echo "Installing additional packages is set by ENV." echo "The following packages will be installed:" $packages"..." echo $packages > /opt/scripts/.packages - bash /opt/scripts/setup_packages.sh + bash /opt/scripts/setup_packages.sh echo "Done." echo ' ' fi @@ -87,13 +84,14 @@ then then echo "Different UID and/ or GID is set by ENV." echo "Changing UID to "$setuid" and GID to "$setgid"..." - usermod -u $setuid iobroker - groupmod -g $setgid iobroker + usermod -u $setuid iobroker + groupmod -g $setgid iobroker echo "Done." echo ' ' fi else echo "Nothing to do here." + echo ' ' fi # Change directory for next steps @@ -111,7 +109,7 @@ echo ' ' if [ `find /opt/iobroker -type f | wc -l` -lt 1 ] then echo "There is no data detected in /opt/iobroker. Restoring initial ioBroker installation..." - tar -xf /opt/initial_iobroker.tar -C / + tar -xf /opt/initial_iobroker.tar -C / echo "Done." elif [ -f /opt/iobroker/iobroker ] then @@ -119,11 +117,11 @@ then elif [ $(ls iobroker_20* 2> /dev/null | wc -l) != "0" ] && [ $(tar -ztvf /opt/iobroker/iobroker_20*.tar.gz "backup/backup.json" 2> /dev/null | wc -l) != "0" ] then echo "ioBroker backup file detected in /opt/iobroker. Restoring ioBroker..." - mv /opt/iobroker/*.tar.gz /opt/ - tar -xf /opt/initial_iobroker.tar -C / - mkdir /opt/iobroker/backups - mv /opt/*.tar.gz /opt/iobroker/backups/ - iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1 + mv /opt/iobroker/*.tar.gz /opt/ + tar -xf /opt/initial_iobroker.tar -C / + mkdir /opt/iobroker/backups + mv /opt/*.tar.gz /opt/iobroker/backups/ + iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1 echo "Done." echo ' ' echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" @@ -204,7 +202,7 @@ then then echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "Setting Adminport to \""$adminport"\"..." - bash iobroker set admin.0 --port $adminport + bash iobroker set admin.0 --port $adminport echo "Done." echo ' ' fi @@ -217,8 +215,8 @@ then if [ "$avahi" = "true" ] then echo "Avahi-daemon is activated by ENV." - chmod 755 /opt/scripts/setup_avahi.sh - bash /opt/scripts/setup_avahi.sh + chmod 755 /opt/scripts/setup_avahi.sh + bash /opt/scripts/setup_avahi.sh echo "Done." echo ' ' fi @@ -231,8 +229,8 @@ then if [ "$zwave" = "true" ] then echo "Z-Wave is activated by ENV." - chmod 755 /opt/scripts/setup_zwave.sh - bash /opt/scripts/setup_zwave.sh + chmod 755 /opt/scripts/setup_zwave.sh + bash /opt/scripts/setup_zwave.sh echo "Done." echo ' ' fi @@ -264,7 +262,7 @@ if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost then echo "Multihost is set as \"master\" by ENV and no external objects db is set." echo "Setting host of objects db to \"0.0.0.0\" to allow external communication..." - jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." echo ' ' elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ] @@ -304,7 +302,7 @@ if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost" then echo "Multihost is set as \"master\" by ENV and no external states db is set." echo "Setting host of states db to \"0.0.0.0\" to allow external communication..." - jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." echo ' ' elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ] @@ -348,7 +346,7 @@ then then echo "ENV IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo "Setting type of objects db to \""$objectsdbtype"\"..." - jq --arg objectsdbtype "$objectsdbtype" '.objects.type = $objectsdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg objectsdbtype "$objectsdbtype" '.objects.type = $objectsdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." @@ -357,7 +355,7 @@ then then echo "ENV IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo "Setting host of objects db to \""$objectsdbhost"\"..." - jq --arg objectsdbhost "$objectsdbhost" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg objectsdbhost "$objectsdbhost" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." @@ -366,7 +364,7 @@ then then echo "ENV IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo "Setting port of objects db to \""$objectsdbport"\"..." - jq --arg objectsdbport "$objectsdbport" '.objects.port = $objectsdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg objectsdbport "$objectsdbport" '.objects.port = $objectsdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." @@ -382,7 +380,7 @@ then then echo "ENV IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo "Setting type of states db to \""$statesdbtype"\"..." - jq --arg statesdbtype "$statesdbtype" '.states.type = $statesdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg statesdbtype "$statesdbtype" '.states.type = $statesdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_STATESDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." @@ -391,7 +389,7 @@ then then echo "ENV IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo "Setting host of states db to \""$statesdbhost"\"..." - jq --arg statesdbhost "$statesdbhost" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg statesdbhost "$statesdbhost" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_STATESDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." @@ -400,7 +398,7 @@ then then echo "ENV IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo "Setting port of states db to \""$statesdbport"\"..." - jq --arg statesdbport "$statesdbport" '.states.port = $statesdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json + jq --arg statesdbport "$statesdbport" '.states.port = $statesdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json echo "Done." else echo "ENV IOB_STATESDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." @@ -413,9 +411,9 @@ fi if [ `find /opt/userscripts -type f | wc -l` -lt 1 ] then echo "There is no data detected in /opt/userscripts. Restoring exapmple userscripts..." - tar -xf /opt/initial_userscripts.tar -C / - chmod 755 /opt/userscripts/userscript_firststart_example.sh - chmod 755 /opt/userscripts/userscript_everystart_example.sh + tar -xf /opt/initial_userscripts.tar -C / + chmod 755 /opt/userscripts/userscript_firststart_example.sh + chmod 755 /opt/userscripts/userscript_everystart_example.sh echo "Done." echo ' ' elif [ -f /opt/userscripts/userscript_firststart.sh ] || [ -f /opt/userscripts/userscript_everystart.sh ] @@ -424,17 +422,17 @@ then then echo "Userscript for first start detected and this is the first start of a new container." echo "Running userscript_firststart.sh..." - chmod 755 /opt/userscripts/userscript_firststart.sh - bash /opt/userscripts/userscript_firststart.sh - rm -f /opt/.firstrun + chmod 755 /opt/userscripts/userscript_firststart.sh + bash /opt/userscripts/userscript_firststart.sh + rm -f /opt/.firstrun echo "Done." echo ' ' fi if [ -f /opt/userscripts/userscript_everystart.sh ] then echo "Userscript for every start detected. Running userscript_everystart.sh..." - chmod 755 /opt/userscripts/userscript_everystart.sh - bash /opt/userscripts/userscript_everystart.sh + chmod 755 /opt/userscripts/userscript_everystart.sh + bash /opt/userscripts/userscript_everystart.sh echo "Done." echo ' ' fi @@ -454,11 +452,7 @@ echo ' ' echo "Starting ioBroker..." echo ' ' -exec gosu iobroker node node_modules/iobroker.js-controller/controller.js "$@" - -fi - -exec "$@" +exec gosu iobroker node node_modules/iobroker.js-controller/controller.js # Preventing container restart by keeping a process alive even if iobroker will be stopped -# tail -f /dev/null +tail -f /dev/null