Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dockerfile to create a docker file for the RPI #242

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
target
cache
protocol/target
contrib
54 changes: 54 additions & 0 deletions contrib/Dockerfile.Rpi
Original file line number Diff line number Diff line change
@@ -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"]