From 4f8ea66207e9f9e248b5972888b7fb29f9b8c461 Mon Sep 17 00:00:00 2001 From: Daniel Romero Date: Sat, 2 Sep 2017 13:47:46 +0200 Subject: [PATCH] Add Dockerfile.Rpi which creates a librespot docker image which can be used on the RPI directly. --- contrib/Dockerfile.Rpi | 54 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 contrib/Dockerfile.Rpi diff --git a/contrib/Dockerfile.Rpi b/contrib/Dockerfile.Rpi new file mode 100644 index 00000000..7c2c12c9 --- /dev/null +++ b/contrib/Dockerfile.Rpi @@ -0,0 +1,54 @@ +# Create a docker image for the RPI +# Build the docker image from the root of the project with the following command : +# $ docker build -t librespot-rpi -f .\contrib\Dockerfile.Rpi . +# +# This builds a docker image which is usable when running docker on the rpi. +# +# This Dockerfile builds in windows without any requirements, for linux based systems you might need to run the following line: +# docker run --rm --privileged multiarch/qemu-user-static:register --reset +# (see here for more info: https://gist.github.com/PieterScheffers/d50f609d9628383e4c9d8d7d269b7643 ) +# +# Save the docker image to a file: +# $ docker save -o contrib/librespot-rpi librespot-rpi +# +# Move it to the rpi and import it with: +# docker load -i librespot-rpi +# +# Run it with: +# docker run -d --restart unless-stopped $(for DEV in $(find /dev/snd -type c); do echo --device=$DEV:$DEV; done) --net=host --name librespot-rpi librespot-rpi --name {devicename} + +FROM debian:stretch + +RUN dpkg --add-architecture armhf +RUN apt-get update + +RUN apt-get install -y curl git build-essential crossbuild-essential-armhf +RUN apt-get install -y libasound2-dev libasound2-dev:armhf + +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +ENV PATH="/root/.cargo/bin/:${PATH}" +RUN rustup target add arm-unknown-linux-gnueabihf + +RUN mkdir /.cargo && \ + echo '[target.arm-unknown-linux-gnueabihf]\nlinker = "arm-linux-gnueabihf-gcc"' >> /.cargo/config + +RUN mkdir /build +ENV CARGO_TARGET_DIR /build +ENV CARGO_HOME /build/cache + +ADD . /src +WORKDIR /src +RUN cargo build --release --target arm-unknown-linux-gnueabihf --no-default-features --features "alsa-backend" + + +FROM resin/rpi-raspbian +RUN apt-get update && \ + apt-get install libasound2 && \ + rm -rf /var/lib/apt/lists/* + +RUN mkdir /librespot +WORKDIR /librespot + +COPY --from=0 /build/arm-unknown-linux-gnueabihf/release/librespot . +RUN chmod +x librespot +ENTRYPOINT ["./librespot"] \ No newline at end of file