some testing

This commit is contained in:
buanet
2020-06-22 16:24:30 +02:00
parent 4b3f57b063
commit 397b4ea536
2 changed files with 38 additions and 47 deletions

View File

@@ -80,20 +80,17 @@ RUN tar -cf /opt/initial_iobroker.tar /opt/iobroker \
# Setting up iobroker-user (shell and home directory) # Setting up iobroker-user (shell and home directory)
RUN chsh -s /bin/bash iobroker \ RUN chsh -s /bin/bash iobroker \
&& usermod --home /opt/iobroker iobroker \ && usermod --home /opt/iobroker iobroker \
&& usermod -u 901 iobroker \ && usermod -u 1000 iobroker \
&& groupmod -g 901 iobroker && groupmod -g 1000 iobroker
# Setting up ENVs # Setting up ENVs
ENV DEBIAN_FRONTEND="teletype" \ ENV DEBIAN_FRONTEND="teletype" \
LANG="de_DE.UTF-8" \ LANG="de_DE.UTF-8" \
LANGUAGE="de_DE:de" \ LANGUAGE="de_DE:de" \
LC_ALL="de_DE.UTF-8" \ LC_ALL="de_DE.UTF-8" \
PACKAGES="vi" \ SETGID=1000 \
SETGID=901 \ SETUID=1000 \
SETUID=901 \
TZ="Europe/Berlin" TZ="Europe/Berlin"
# Run startup-script # Run startup-script
# ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"] ENTRYPOINT ["/bin/bash", "-c", "/opt/scripts/iobroker_startup.sh"]
ENTRYPOINT ["/opt/scripts/iobroker_startup.sh"]
CMD ["iob"]

View File

@@ -1,8 +1,5 @@
#!/bin/bash #!/bin/bash
set -e
if [ "$1" = 'iob' ];
then
# Reading ENV # Reading ENV
adminport=$IOB_ADMINPORT adminport=$IOB_ADMINPORT
avahi=$AVAHI avahi=$AVAHI
@@ -79,7 +76,7 @@ then
echo "Installing additional packages is set by ENV." echo "Installing additional packages is set by ENV."
echo "The following packages will be installed:" $packages"..." echo "The following packages will be installed:" $packages"..."
echo $packages > /opt/scripts/.packages echo $packages > /opt/scripts/.packages
bash /opt/scripts/setup_packages.sh bash /opt/scripts/setup_packages.sh
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
@@ -87,13 +84,14 @@ then
then then
echo "Different UID and/ or GID is set by ENV." echo "Different UID and/ or GID is set by ENV."
echo "Changing UID to "$setuid" and GID to "$setgid"..." echo "Changing UID to "$setuid" and GID to "$setgid"..."
usermod -u $setuid iobroker usermod -u $setuid iobroker
groupmod -g $setgid iobroker groupmod -g $setgid iobroker
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
else else
echo "Nothing to do here." echo "Nothing to do here."
echo ' '
fi fi
# Change directory for next steps # Change directory for next steps
@@ -111,7 +109,7 @@ echo ' '
if [ `find /opt/iobroker -type f | wc -l` -lt 1 ] if [ `find /opt/iobroker -type f | wc -l` -lt 1 ]
then then
echo "There is no data detected in /opt/iobroker. Restoring initial ioBroker installation..." 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." echo "Done."
elif [ -f /opt/iobroker/iobroker ] elif [ -f /opt/iobroker/iobroker ]
then 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" ] 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 then
echo "ioBroker backup file detected in /opt/iobroker. Restoring ioBroker..." echo "ioBroker backup file detected in /opt/iobroker. Restoring ioBroker..."
mv /opt/iobroker/*.tar.gz /opt/ mv /opt/iobroker/*.tar.gz /opt/
tar -xf /opt/initial_iobroker.tar -C / tar -xf /opt/initial_iobroker.tar -C /
mkdir /opt/iobroker/backups mkdir /opt/iobroker/backups
mv /opt/*.tar.gz /opt/iobroker/backups/ mv /opt/*.tar.gz /opt/iobroker/backups/
iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1 iobroker restore 0 > /opt/iobroker/log/restore.log 2>&1
echo "Done." echo "Done."
echo ' ' echo ' '
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@@ -204,7 +202,7 @@ then
then then
echo "Adminport set by ENV does not match port configured in ioBroker installation." echo "Adminport set by ENV does not match port configured in ioBroker installation."
echo "Setting Adminport to \""$adminport"\"..." echo "Setting Adminport to \""$adminport"\"..."
bash iobroker set admin.0 --port $adminport bash iobroker set admin.0 --port $adminport
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
@@ -217,8 +215,8 @@ then
if [ "$avahi" = "true" ] if [ "$avahi" = "true" ]
then then
echo "Avahi-daemon is activated by ENV." echo "Avahi-daemon is activated by ENV."
chmod 755 /opt/scripts/setup_avahi.sh chmod 755 /opt/scripts/setup_avahi.sh
bash /opt/scripts/setup_avahi.sh bash /opt/scripts/setup_avahi.sh
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
@@ -231,8 +229,8 @@ then
if [ "$zwave" = "true" ] if [ "$zwave" = "true" ]
then then
echo "Z-Wave is activated by ENV." echo "Z-Wave is activated by ENV."
chmod 755 /opt/scripts/setup_zwave.sh chmod 755 /opt/scripts/setup_zwave.sh
bash /opt/scripts/setup_zwave.sh bash /opt/scripts/setup_zwave.sh
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
@@ -264,7 +262,7 @@ if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost
then then
echo "Multihost is set as \"master\" by ENV and no external objects db is set." 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..." 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 "Done."
echo ' ' echo ' '
elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ] elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ]
@@ -304,7 +302,7 @@ if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost"
then then
echo "Multihost is set as \"master\" by ENV and no external states db is set." 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..." 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 "Done."
echo ' ' echo ' '
elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ] elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ]
@@ -348,7 +346,7 @@ then
then then
echo "ENV IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo "ENV IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation."
echo "Setting type of objects db to \""$objectsdbtype"\"..." 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." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." echo "ENV IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here."
@@ -357,7 +355,7 @@ then
then then
echo "ENV IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo "ENV IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation."
echo "Setting host of objects db to \""$objectsdbhost"\"..." 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." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." echo "ENV IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation. Nothing to do here."
@@ -366,7 +364,7 @@ then
then then
echo "ENV IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo "ENV IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation."
echo "Setting port of objects db to \""$objectsdbport"\"..." 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." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." echo "ENV IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation. Nothing to do here."
@@ -382,7 +380,7 @@ then
then then
echo "ENV IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo "ENV IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation."
echo "Setting type of states db to \""$statesdbtype"\"..." 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." echo "Done."
else else
echo "ENV IOB_STATESDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." echo "ENV IOB_STATESDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here."
@@ -391,7 +389,7 @@ then
then then
echo "ENV IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo "ENV IOB_STATESDB_HOST is set and value is different from detected ioBroker installation."
echo "Setting host of states db to \""$statesdbhost"\"..." 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." echo "Done."
else else
echo "ENV IOB_STATESDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." echo "ENV IOB_STATESDB_HOST is set and value meets detected ioBroker installation. Nothing to do here."
@@ -400,7 +398,7 @@ then
then then
echo "ENV IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo "ENV IOB_STATESDB_PORT is set and value is different from detected ioBroker installation."
echo "Setting port of states db to \""$statesdbport"\"..." 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." echo "Done."
else else
echo "ENV IOB_STATESDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." 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 ] if [ `find /opt/userscripts -type f | wc -l` -lt 1 ]
then then
echo "There is no data detected in /opt/userscripts. Restoring exapmple userscripts..." echo "There is no data detected in /opt/userscripts. Restoring exapmple userscripts..."
tar -xf /opt/initial_userscripts.tar -C / tar -xf /opt/initial_userscripts.tar -C /
chmod 755 /opt/userscripts/userscript_firststart_example.sh chmod 755 /opt/userscripts/userscript_firststart_example.sh
chmod 755 /opt/userscripts/userscript_everystart_example.sh chmod 755 /opt/userscripts/userscript_everystart_example.sh
echo "Done." echo "Done."
echo ' ' echo ' '
elif [ -f /opt/userscripts/userscript_firststart.sh ] || [ -f /opt/userscripts/userscript_everystart.sh ] elif [ -f /opt/userscripts/userscript_firststart.sh ] || [ -f /opt/userscripts/userscript_everystart.sh ]
@@ -424,17 +422,17 @@ then
then then
echo "Userscript for first start detected and this is the first start of a new container." echo "Userscript for first start detected and this is the first start of a new container."
echo "Running userscript_firststart.sh..." echo "Running userscript_firststart.sh..."
chmod 755 /opt/userscripts/userscript_firststart.sh chmod 755 /opt/userscripts/userscript_firststart.sh
bash /opt/userscripts/userscript_firststart.sh bash /opt/userscripts/userscript_firststart.sh
rm -f /opt/.firstrun rm -f /opt/.firstrun
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
if [ -f /opt/userscripts/userscript_everystart.sh ] if [ -f /opt/userscripts/userscript_everystart.sh ]
then then
echo "Userscript for every start detected. Running userscript_everystart.sh..." echo "Userscript for every start detected. Running userscript_everystart.sh..."
chmod 755 /opt/userscripts/userscript_everystart.sh chmod 755 /opt/userscripts/userscript_everystart.sh
bash /opt/userscripts/userscript_everystart.sh bash /opt/userscripts/userscript_everystart.sh
echo "Done." echo "Done."
echo ' ' echo ' '
fi fi
@@ -454,11 +452,7 @@ echo ' '
echo "Starting ioBroker..." echo "Starting ioBroker..."
echo ' ' echo ' '
exec gosu iobroker node node_modules/iobroker.js-controller/controller.js "$@" exec gosu iobroker node node_modules/iobroker.js-controller/controller.js
fi
exec "$@"
# Preventing container restart by keeping a process alive even if iobroker will be stopped # Preventing container restart by keeping a process alive even if iobroker will be stopped
# tail -f /dev/null tail -f /dev/null