From 239011f0712698a454e93c0c1a1638d43b828fdc Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sun, 10 Nov 2019 17:58:53 +0200 Subject: [PATCH] Added dockerfile for snips Signed-off-by: Marko Korhonen --- homeautomation/snips/Dockerfile.amd64 | 46 +++++++++++++++ homeautomation/snips/build.sh | 2 + homeautomation/snips/start-snips.sh | 84 +++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 homeautomation/snips/Dockerfile.amd64 create mode 100755 homeautomation/snips/build.sh create mode 100644 homeautomation/snips/start-snips.sh diff --git a/homeautomation/snips/Dockerfile.amd64 b/homeautomation/snips/Dockerfile.amd64 new file mode 100644 index 0000000..45c4d7d --- /dev/null +++ b/homeautomation/snips/Dockerfile.amd64 @@ -0,0 +1,46 @@ +#version: 20181208_rc1 + +FROM debian:stretch-slim + +#Change the timezone to your current timezone!! +ENV TZ=Europe/Helsinki + +RUN set -x && \ + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN set -x && \ + sed -i "s#deb http://deb.debian.org/debian stretch main#deb http://deb.debian.org/debian stretch main non-free#g" /etc/apt/sources.list && \ + sed -i "s#deb http://security.debian.org/debian-security stretch/updates main#deb http://security.debian.org/debian-security stretch/updates main non-free#g" /etc/apt/sources.list && \ + sed -i "s#deb http://deb.debian.org/debian stretch-updates main#deb http://deb.debian.org/debian stretch-updates main non-free#g" /etc/apt/sources.list + +RUN set -x && \ + apt-get update && apt-get dist-upgrade -y + +RUN set -x && \ + apt-get install -y dirmngr apt-transport-https + +RUN set -x && \ + bash -c 'echo "deb https://debian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list' + +RUN set -x && \ + apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455 + +RUN set -x && \ + apt-get update + +RUN set -x && \ + apt-get install -y --allow-unauthenticated alsa-utils snips-platform-voice snips-skill-server curl unzip snips-template python-pip git + +RUN set -x && \ + pip install virtualenv + +#Is this really required? +RUN set -x && \ + usermod -aG snips-skills-admin root + +COPY start-snips.sh start-snips.sh + +EXPOSE 1883/tcp + + +CMD ["bash","/start-snips.sh"] diff --git a/homeautomation/snips/build.sh b/homeautomation/snips/build.sh new file mode 100755 index 0000000..0f3e43d --- /dev/null +++ b/homeautomation/snips/build.sh @@ -0,0 +1,2 @@ +#!/bin/bash +docker build -f Dockerfile.amd64 -t reekymarko/snips . diff --git a/homeautomation/snips/start-snips.sh b/homeautomation/snips/start-snips.sh new file mode 100644 index 0000000..462c541 --- /dev/null +++ b/homeautomation/snips/start-snips.sh @@ -0,0 +1,84 @@ +#!/bin/bash +set -e + +#verify that environment variables have been passed to this container. set the default value if not. +ENABLE_MQTT=${ENABLE_MQTT:-yes} +ENABLE_HOTWORD_SERVICE=${ENABLE_HOTWORD_SERVICE:-yes} + + +#deploy apps (skills). See: https://snips.gitbook.io/documentation/console/deploying-your-skills +snips-template render + +#goto skill directory +cd /var/lib/snips/skills + +#start with a clear skill directory +rm -rf * + +#download required skills from git +for url in $(awk '$1=="url:" {print $2}' /usr/share/snips/assistant/Snipsfile.yaml); do + git clone $url +done + +#be shure we are still in the skill directory +cd /var/lib/snips/skills + +#run setup.sh for each skill. +find . -maxdepth 1 -type d -print0 | while IFS= read -r -d '' dir; do + cd "$dir" + if [ -f setup.sh ]; then + echo "Run setup.sh in "$dir + #run the scrips always with bash + bash ./setup.sh + fi + cd /var/lib/snips/skills +done + +#skill deployment is done + +#go back to root directory +cd / + + +#start own mqtt service. +if [ $ENABLE_MQTT == yes ]; then + mosquitto -d +fi + +#start Snips analytics service +snips-analytics 2> /var/log/snips-analytics.log & +snips_analytics_pid=$! + +#start Snips' Automatic Speech Recognition service +snips-asr 2> /var/log/snips-asr.log & +snips_asr_pid=$! + +#start Snips-dialogue service +snips-dialogue 2> /var/log/snips-dialogue.log & +snips_dialogue_pid=$! + +#start Snips hotword service + +if [ $ENABLE_HOTWORD_SERVICE == yes ]; then + snips-hotword 2> /var/log/snips-hotword.log & + snips_hotword_pid=$! +fi + +#start Snips Natural Language Understanding service +snips-nlu 2> /var/log/snips-nlu.log & +snips_nlu_pid=$! + +#start Snips Skill service +snips-skill-server 2> /var/log/snips-skill-server & +snips_skill_server_pid=$! + +#start Snips TTS service +snips-tts 2> /var/log/snips-tts.log & +snips_tts_pid=$! + +#start the snips audio server without playback and microphone +snips-audio-server --disable-playback --no-mike --hijack localhost:64321 2> /var/log/snips-audio-server.log & +snips_audio_server_pid=$! + +wait "$snips_analytics_pid" "$snips_asr_pid" "$snips_dialogue_pid" "$snips_hotword_pid" "$snips_nlu_pid" "$snips_skill_server_pid" "$snips_audio_server_pid" +