From 18594115d2f396837e41161f1bb38c1833d43756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Sun, 18 Nov 2018 11:24:37 +0100 Subject: [PATCH 1/8] Remove keys with environment variables to prepare for dockerization --- slave/displays/assets/src/js/stocks.js | 8 +++----- slave/displays/assets/src/js/transit.js | 5 ++--- slave/displays/assets/src/js/weather.js | 5 ++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/slave/displays/assets/src/js/stocks.js b/slave/displays/assets/src/js/stocks.js index cb63fd5..d09cbb0 100644 --- a/slave/displays/assets/src/js/stocks.js +++ b/slave/displays/assets/src/js/stocks.js @@ -1,5 +1,3 @@ -import keys from './config/keys.js'; - // needs an api key from alphavantage.co -> https://www.alphavantage.co/support/#api-key // list of all stocks to be retrieved @@ -17,7 +15,7 @@ let currentIndex = 0; let urls = []; SYMBOLS.forEach((s) => { - urls.push('https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + keys.stocks); + urls.push('https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + process.env.STOCKS_API_KEY); }); let data = []; @@ -28,7 +26,7 @@ window.onload = () => { SYMBOLS.forEach(s => { - let url = 'http://smirrormaster.local:8080/https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + keys.stocks; + let url = 'http://smirrormaster.local:8080/https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + process.env.STOCKS_API_KEY; promises.push(fetch(url) .then(response => response.json()) @@ -165,4 +163,4 @@ window.onload = () => { .call(d3.axisLeft(y)); }; -} \ No newline at end of file +} diff --git a/slave/displays/assets/src/js/transit.js b/slave/displays/assets/src/js/transit.js index 69554f9..680558d 100644 --- a/slave/displays/assets/src/js/transit.js +++ b/slave/displays/assets/src/js/transit.js @@ -1,10 +1,9 @@ import moment from 'moment'; -import keys from './config/keys.js'; const ORIGIN = 'Hinter dem Brunnen 6, Lüneburg'; const DESTINATION = 'Hongkongstr. 1, Hamburg'; -let key = keys.transit; +let key = process.env.TRANSIT_API_KEY; let base = 'http://smirrormaster.local:8080/https://maps.googleapis.com/maps/api/directions/json'; let url = `${base}?origin=${ORIGIN}&destination=${DESTINATION}&mode=transit&alternatives=true&key=${key}`; @@ -80,4 +79,4 @@ let url = `${base}?origin=${ORIGIN}&destination=${DESTINATION}&mode=transit&alte return updateTime; }(), 1000); - }); \ No newline at end of file + }); diff --git a/slave/displays/assets/src/js/weather.js b/slave/displays/assets/src/js/weather.js index d8fabbf..e7a25b4 100644 --- a/slave/displays/assets/src/js/weather.js +++ b/slave/displays/assets/src/js/weather.js @@ -1,4 +1,3 @@ -import keys from './config/keys.js'; import moment from 'moment'; import timespans from './weather/timespans.js'; import icons from './weather/icons.js'; @@ -6,7 +5,7 @@ import icons from './weather/icons.js'; // api configuration let base = 'https://api.openweathermap.org/data/2.5/'; let location = 'Lüneburg'; -let key = keys.weather; +let key = process.env.WEATHER_API_KEY; let current = `${base}/weather?q=${location}&APPID=${key}`; let forecast = `${base}/forecast?q=${location}&APPID=${key}`; @@ -86,4 +85,4 @@ window.onload = () => { }); -}; \ No newline at end of file +}; From 572d3d973e7402b8334207547e0846486d8cff92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Sun, 18 Nov 2018 12:15:52 +0100 Subject: [PATCH 2/8] Provide dockerization --- .dockerignore | 4 ++++ Dockerfile | 26 ++++++++++++++++++++++++++ docker-compose.yml | 17 +++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..83d144d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +node_modules/ +npm-debug.log +Dockerfile +docker-compose*.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..abb2ff4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:10-alpine +EXPOSE 8080 +ENV HOST 0.0.0.0 + + +ARG WORKDIR=/sMirror +RUN mkdir -p $WORKDIR +WORKDIR $WORKDIR + +# See: https://github.com/nodejs/docker-node/pull/367#issuecomment-430807898 +RUN apk --no-cache add git + +COPY package.json . +COPY package-lock.json . +RUN npm install + +RUN mkdir -p slave/displays +COPY slave/displays/package.json slave/displays/ +COPY slave/displays/package-lock.json slave/displays/ +RUN cd slave/displays && npm install + +COPY . . +RUN cd slave/displays && npm run-script build + +CMD node proxy.js + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5f5a507 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' + +services: + smirror: + image: roschaefer/smirror + build: . + ports: + - 8080:8080 + environment: + - HOST=0.0.0.0 + - TRANSIT_API_KEY=${TRANSIT_API_KEY} + - WEATHER_API_KEY=${WEATHER_API_KEY} + - STOCKS_API_KEY=${STOCKS_API_KEY} + volumes: + - .:/sMirror + - /sMirror/node_modules + command: node proxy.js From f8b4c2cba65b4e20b8694e07b63bdb6c8634b7d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Mon, 19 Nov 2018 00:13:44 +0100 Subject: [PATCH 3/8] Maybe we can simply set the CORS on our own URLs? --- Dockerfile | 5 ++++- slave/displays/assets/src/js/maus.js | 4 ++-- slave/displays/assets/src/js/news.js | 4 ++-- slave/displays/assets/src/js/stocks.js | 2 +- slave/displays/assets/src/js/tagesschau.js | 4 ++-- slave/displays/assets/src/js/transit.js | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index abb2ff4..ab54104 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,9 @@ WORKDIR $WORKDIR # See: https://github.com/nodejs/docker-node/pull/367#issuecomment-430807898 RUN apk --no-cache add git +RUN npm install http-server -g + + COPY package.json . COPY package-lock.json . RUN npm install @@ -22,5 +25,5 @@ RUN cd slave/displays && npm install COPY . . RUN cd slave/displays && npm run-script build -CMD node proxy.js +CMD cd slave/displays && http-server --cors diff --git a/slave/displays/assets/src/js/maus.js b/slave/displays/assets/src/js/maus.js index 9409bdc..c4b100b 100644 --- a/slave/displays/assets/src/js/maus.js +++ b/slave/displays/assets/src/js/maus.js @@ -6,7 +6,7 @@ const MAX_ENTRIES = 5; window.onload = () => { // real feed url - uncomment line below - let url = 'http://smirrormaster.local:8080/http://www1.wdr.de/mediathek/video/podcast/channel-sendung-mit-der-maus-100.podcast'; + let url = 'http://www1.wdr.de/mediathek/video/podcast/channel-sendung-mit-der-maus-100.podcast'; // local test feed url //let url = './local-feed.xml'; @@ -30,4 +30,4 @@ window.onload = () => { }); -}; \ No newline at end of file +}; diff --git a/slave/displays/assets/src/js/news.js b/slave/displays/assets/src/js/news.js index 56655a6..46ac4dc 100644 --- a/slave/displays/assets/src/js/news.js +++ b/slave/displays/assets/src/js/news.js @@ -3,7 +3,7 @@ import moment from 'moment'; import ProgressBar from './lib/progress-bar.js'; window.onload = () => { - RSSParser.parseURL('http://smirrormaster.local:8080/https://spiegel.de/schlagzeilen/tops/index.rss', (err, parsed) => { + RSSParser.parseURL('https://spiegel.de/schlagzeilen/tops/index.rss', (err, parsed) => { let items = parsed.feed.entries.slice(0, 5); let i = 0; @@ -34,4 +34,4 @@ window.onload = () => { }(), 20000); }); -}; \ No newline at end of file +}; diff --git a/slave/displays/assets/src/js/stocks.js b/slave/displays/assets/src/js/stocks.js index d09cbb0..696cab9 100644 --- a/slave/displays/assets/src/js/stocks.js +++ b/slave/displays/assets/src/js/stocks.js @@ -26,7 +26,7 @@ window.onload = () => { SYMBOLS.forEach(s => { - let url = 'http://smirrormaster.local:8080/https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + process.env.STOCKS_API_KEY; + let url = 'https://www.alphavantage.co/query?function=' + TIMESPAN + '&symbol=' + s.symbol + '&interval=60min&apikey=' + process.env.STOCKS_API_KEY; promises.push(fetch(url) .then(response => response.json()) diff --git a/slave/displays/assets/src/js/tagesschau.js b/slave/displays/assets/src/js/tagesschau.js index 2cb66c0..609c759 100644 --- a/slave/displays/assets/src/js/tagesschau.js +++ b/slave/displays/assets/src/js/tagesschau.js @@ -2,7 +2,7 @@ require('../../../node_modules/rss-parser/dist/rss-parser.js'); window.onload = () => { // real feed url - uncomment line below - let url = 'http://smirrormaster.local:8080/https://www.tagesschau.de/export/video-podcast/tagesschau-in-100-sekunden/'; + let url = 'https://www.tagesschau.de/export/video-podcast/tagesschau-in-100-sekunden/'; // local test feed url //let url = './local-feed.xml'; @@ -19,4 +19,4 @@ window.onload = () => { }); -}; \ No newline at end of file +}; diff --git a/slave/displays/assets/src/js/transit.js b/slave/displays/assets/src/js/transit.js index 680558d..92fd594 100644 --- a/slave/displays/assets/src/js/transit.js +++ b/slave/displays/assets/src/js/transit.js @@ -4,7 +4,7 @@ const ORIGIN = 'Hinter dem Brunnen 6, Lüneburg'; const DESTINATION = 'Hongkongstr. 1, Hamburg'; let key = process.env.TRANSIT_API_KEY; -let base = 'http://smirrormaster.local:8080/https://maps.googleapis.com/maps/api/directions/json'; +let base = 'https://maps.googleapis.com/maps/api/directions/json'; let url = `${base}?origin=${ORIGIN}&destination=${DESTINATION}&mode=transit&alternatives=true&key=${key}`; fetch(url, { From fea2de0fb13221ad8fa334dcbde908c35c6905a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Mon, 19 Nov 2018 00:14:53 +0100 Subject: [PATCH 4/8] Add mqtt server for development --- Dockerfile | 3 +++ docker-compose.yml | 9 +++++---- slave/index.html | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index ab54104..730bd32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,9 @@ WORKDIR $WORKDIR # See: https://github.com/nodejs/docker-node/pull/367#issuecomment-430807898 RUN apk --no-cache add git +# mosquitto +RUN apk --no-cache add mosquitto mosquitto-clients + RUN npm install http-server -g diff --git a/docker-compose.yml b/docker-compose.yml index 5f5a507..0261a7f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,8 @@ services: - TRANSIT_API_KEY=${TRANSIT_API_KEY} - WEATHER_API_KEY=${WEATHER_API_KEY} - STOCKS_API_KEY=${STOCKS_API_KEY} - volumes: - - .:/sMirror - - /sMirror/node_modules - command: node proxy.js + + mqtt: + image: ncarlier/mqtt + ports: + - 1883:1883 diff --git a/slave/index.html b/slave/index.html index 0cbb409..25a5877 100644 --- a/slave/index.html +++ b/slave/index.html @@ -17,7 +17,7 @@