99 lines
2.3 KiB
Docker
99 lines
2.3 KiB
Docker
# ----------------
|
|
# STEP 1:
|
|
# https://lobradov.github.io/Building-docker-multiarch-images/
|
|
# Build Openzwave and Zwave2Mqtt pkg
|
|
# All result files will be put in /dist folder
|
|
FROM node:8.15.1-alpine AS build
|
|
|
|
# Set the commit of Zwave2Mqtt to checkout when cloning the repo
|
|
ENV Z2M_VERSION=9cc3740740b57f1e896139b5ffdb25be7576ad58
|
|
|
|
# Install required dependencies
|
|
RUN apk update && apk --no-cache add \
|
|
gnutls \
|
|
gnutls-dev \
|
|
libusb \
|
|
eudev \
|
|
# Install build dependencies
|
|
&& apk --no-cache --virtual .build-deps add \
|
|
coreutils \
|
|
eudev-dev \
|
|
build-base \
|
|
git \
|
|
python \
|
|
bash \
|
|
libusb-dev \
|
|
linux-headers \
|
|
wget \
|
|
tar \
|
|
openssl \
|
|
make \
|
|
socat
|
|
|
|
# Build binaries and move them to /dist/lib
|
|
RUN cd /root \
|
|
&& wget http://old.openzwave.com/downloads/openzwave-1.4.1.tar.gz \
|
|
&& tar zxvf openzwave-*.gz \
|
|
&& cd openzwave-* && make && make install \
|
|
&& mkdir -p /dist/lib \
|
|
&& mv libopenzwave.so* /dist/lib/
|
|
|
|
COPY bin/package.sh /root/package.sh
|
|
|
|
# Clone Zwave2Mqtt build pkg files and move them to /dist/pkg
|
|
RUN npm config set unsafe-perm true && npm install -g pkg \
|
|
&& cd /root \
|
|
&& git clone https://github.com/OpenZWave/Zwave2Mqtt.git \
|
|
&& cd Zwave2Mqtt \
|
|
&& git checkout ${Z2M_VERSION} \
|
|
&& npm install \
|
|
&& npm run build
|
|
|
|
RUN cd /root \
|
|
&& chmod +x package.sh && ./package.sh \
|
|
&& mkdir -p /dist/pkg \
|
|
&& mv /root/Zwave2Mqtt/pkg/* /dist/pkg
|
|
|
|
# Get last config DB from main repo and move files to /dist/db
|
|
RUN cd /root \
|
|
&& git clone https://github.com/OpenZWave/open-zwave.git \
|
|
&& cd open-zwave \
|
|
&& mkdir -p /dist/db \
|
|
&& mv config/* /dist/db
|
|
|
|
# Clean up
|
|
RUN rm -R /root/* && apk del .build-deps
|
|
|
|
# ----------------
|
|
# STEP 2:
|
|
# Run a minimal alpine image
|
|
FROM alpine:latest
|
|
|
|
LABEL maintainer="zoide"
|
|
|
|
RUN apk update && apk add --no-cache \
|
|
libstdc++ \
|
|
libgcc \
|
|
libusb \
|
|
eudev
|
|
|
|
# Copy files from previous build stage
|
|
COPY --from=build /dist/lib/ /lib/
|
|
COPY --from=build /dist/db/ /usr/local/etc/openzwave/
|
|
COPY --from=build /dist/pkg /usr/src/app
|
|
|
|
# supervisor base configuration
|
|
ADD supervisor.conf /etc/supervisor.conf
|
|
|
|
# Set enviroment
|
|
ENV LD_LIBRARY_PATH /lib
|
|
|
|
EXPOSE 8091
|
|
|
|
CMD ["supervisord", "-c", "/etc/supervisor.conf"]
|
|
#CMD ["/usr/src/app/zwave2mqtt"]
|
|
|
|
|
|
|
|
|