From 58390034b5417300e977424b265a3d3b99f88b97 Mon Sep 17 00:00:00 2001 From: gregory Date: Thu, 24 Jan 2019 00:11:31 -0500 Subject: [PATCH] Feat: Docker build --- Dockerfile | 43 ++++++++++++++++++++++++++++++++++++++++++ contrib/docker/init.sh | 11 +++++++++++ mkrelease.sh | 23 ++++++++++++++-------- 3 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 Dockerfile create mode 100644 contrib/docker/init.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8ebfad8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,43 @@ +FROM library/debian:9 as build +RUN apt-get update +RUN apt-get install git meson ninja-build gcc cmake libssl-dev -y +RUN apt-get install openjdk-8-jre-headless perl -y +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 +RUN mkdir /libmpdclient-dist +RUN git clone https://github.com/MusicPlayerDaemon/libmpdclient.git +WORKDIR /libmpdclient +RUN meson . output +RUN ninja -C output +RUN ninja -C output install +RUN mesonconf output -Dprefix=/libmpdclient-dist +RUN ninja -C output +RUN ninja -C output install +WORKDIR / +RUN tar -czvf /libmpdclient-master.tar.gz -C /libmpdclient-dist . +COPY . /myMPD/ +ENV MYMPD_INSTALL_PREFIX=/myMPD-dist/usr +RUN mkdir -p $MYMPD_INSTALL_PREFIX +WORKDIR /myMPD +RUN ./mkrelease.sh +WORKDIR / +RUN tar -czvf /mympd.tar.gz -C /myMPD-dist . + +FROM library/debian:9-slim +ENV MYMPD_COVERIMAGENAME=folder.jpg +ENV MYMPD_MPDHOST=127.0.0.1 +ENV MYMPD_MPDPORT=6600 +ENV MYMPD_SSL=true +ENV MYMPD_LOGLEVEL=1 +RUN apt-get update && apt-get install libssl-dev openssl -y +COPY --from=build /libmpdclient-master.tar.gz / +COPY --from=build /mympd.tar.gz / +COPY --from=build /myMPD/debian/postinst / +WORKDIR / +RUN tar xfv libmpdclient-master.tar.gz -C / +RUN tar xfv mympd.tar.gz -C / +RUN rm libmpdclient-master.tar.gz +RUN rm mympd.tar.gz +COPY contrib/docker/init.sh / +RUN chmod +x /init.sh +ENTRYPOINT ["/init.sh"] diff --git a/contrib/docker/init.sh b/contrib/docker/init.sh new file mode 100644 index 0000000..e4b3e63 --- /dev/null +++ b/contrib/docker/init.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +/postinst +sed -i "s#mpdhost = 127.0.0.1#mpdhost = $MYMPD_MPDHOST#g" /etc/mympd/mympd.conf +sed -i "s#mpdport = 6600#mpdport = $MYMPD_MPDPORT#g" /etc/mympd/mympd.conf +sed -i "s#ssl = true#ssl = $MYMPD_SSL#g" /etc/mympd/mympd.conf +sed -i "s#coverimagename = folder.jpg#coverimagename = $MYMPD_COVERIMAGENAME#g" /etc/mympd/mympd.conf +sed -i "s#loglevel = 1#loglevel = $MYMPD_LOGLEVEL#g" /etc/mympd/mympd.conf +mympd /etc/mympd/mympd.conf + + diff --git a/mkrelease.sh b/mkrelease.sh index 91d5417..fdde4ac 100755 --- a/mkrelease.sh +++ b/mkrelease.sh @@ -1,4 +1,4 @@ -#/bin/sh +#!/bin/bash JAVABIN=$(which java 2> /dev/null) HASJAVA="$?" @@ -18,11 +18,11 @@ function minify { then perl -pe 's/^\s*//gm; s/\s*$//gm' $SRC > $DST ERROR="$?" - elif [ "$TYPE" = "js" ] && [ "$HASJAVA" = "1" ] + elif [ "$TYPE" = "js" ] && [ "$HASJAVA" = "0" ] then $JAVABIN -jar dist/buildtools/closure-compiler.jar $SRC > $DST ERROR="$?" - elif [ "$TYPE" = "css" ] && [ "$HASJAVA" = "1" ] + elif [ "$TYPE" = "css" ] && [ "$HASJAVA" = "0" ] then $JAVABIN -jar dist/buildtools/closure-stylesheets.jar --allow-unrecognized-properties $SRC > $DST ERROR="$?" @@ -59,12 +59,19 @@ minify html htdocs/player.html dist/htdocs/player.html echo "Compiling and installing mympd" install -d release cd release -cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=RELEASE .. +INSTALL_PREFIX="${MYMPD_INSTALL_PREFIX:-/usr}" +cmake -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DCMAKE_BUILD_TYPE=RELEASE .. make -sudo make install -cd .. - -sudo debian/postinst +if [ $INSTALL_PREFIX = "/usr" ] +then + sudo make install + cd .. + sudo debian/postinst +else + # Container build implied when $INSTALL_PREFIX != /usr + make install + cd .. +fi if [ -x /usr/bin/cppcheck ] then