From 52d327c0b42c6cd9e887381fc414d6f29417887c Mon Sep 17 00:00:00 2001 From: ViViDboarder Date: Mon, 28 Aug 2017 18:35:05 -0700 Subject: [PATCH] WIP Really a wip right now. Playing with adding shrinkwrapping so that we can get reproducible builds --- Dockerfile | 37 ++++++++++++++++++++----------------- Makefile | 13 +++++++++++-- npm-shrinkwrap.json | 1 + package.json | 10 ++++++++++ start.sh | 4 ++-- 5 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 npm-shrinkwrap.json create mode 100644 package.json diff --git a/Dockerfile b/Dockerfile index 5353120..e5ad37f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ -FROM hypriot/rpi-node:8 +# FROM hypriot/rpi-node:8 +FROM node:8 MAINTAINER ViViDboarder -RUN [ "cross-build-start" ] +# RUN [ "cross-build-start" ] ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 @@ -16,26 +17,28 @@ RUN apt-get update && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -RUN npm install -g --unsafe-perm \ - homebridge \ - hap-nodejs \ - node-gyp && \ - cd /usr/local/lib/node_modules/homebridge/ && \ - npm install --unsafe-perm bignum && \ - cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns && \ - node-gyp BUILDTYPE=Release rebuild - RUN mkdir -p /var/run/dbus/ USER root -RUN mkdir -p /root/.homebridge -RUN [ "cross-build-end" ] +RUN mkdir -p /homebridge +RUN mkdir -p /root/.homebridge +VOLUME /root/.homebridge + +RUN mkdir -p /homebridge +WORKDIR /homebridge + +COPY package.json /homebridge/ +COPY npm-shrinkwrap.json /homebridge/ + +RUN npm install + +# RUN [ "cross-build-end" ] EXPOSE 5353 51826 -VOLUME /root/.homebridge -WORKDIR /root/.homebridge -ADD start.sh /root/.homebridge/start.sh +COPY start.sh /homebridge/ -CMD /root/.homebridge/start.sh +COPY plugins-sample.txt /homebridge/plugins.txt + +CMD /homebridge/start.sh diff --git a/Makefile b/Makefile index 4c97e73..ff66522 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ build: # Target to build and run and subsequently remove image run: build docker run --net=host --rm \ - -p "localhost:51826:51826" + -p "51826:51826" \ -v "$(shell pwd)/config.json:/root/.homebridge/config.json" \ -v "$(shell pwd)/plugins.txt:/root/.homebridge/plugins.txt" \ rpi-homebridge-dev @@ -15,7 +15,7 @@ run: build # Target to drop into an interractive shell shell: build docker run --net=host --rm \ - -p "localhost:51826:51826" + -p "51826:51826" \ -v "$(shell pwd)/config.json:/root/.homebridge/config.json" \ -v "$(shell pwd)/plugins.txt:/root/.homebridge/plugins.txt" \ -it rpi-homebridge-dev bash @@ -27,3 +27,12 @@ tag: build # Pushes tagged image to docker hub push: tag docker push vividboarder/rpi-homebridge + +clean-shrinkwrap: + echo '{}' > npm-shrinkwrap.json + +update-shrinkwrap: clean-shrinkwrap build + docker run --rm \ + -v "$(shell pwd)/npm-shrinkwrap.json:/homebridge/npm-shrinkwrap.json" \ + rpi-homebridge-dev npm shrinkwrap + # rpi-homebridge-dev cp package-lock.json npm-shrinkwrap.json diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/npm-shrinkwrap.json @@ -0,0 +1 @@ +{} diff --git a/package.json b/package.json new file mode 100644 index 0000000..094fd15 --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "name": "docker-rpi-homebridge", + "version": "1.0.0", + "description": "Meta package for installing dependencies", + "dependencies": { + "homebridge": "0.4.27", + "hap-nodejs": "0.4.32", + "node-gyp": "3.6.2" + } +} diff --git a/start.sh b/start.sh index a94afe1..d0f18d0 100755 --- a/start.sh +++ b/start.sh @@ -8,7 +8,7 @@ service dbus start service avahi-daemon start # Install desired plugins -cat /root/.homebridge/plugins.txt | xargs npm install -g --unsafe-perm +cat /homebridge/plugins.txt | xargs npm install --unsafe-perm # Start service -homebridge +/homebridge/node_modules/.bin/homebridge