From 6afec6a0302190f8ee17c274f01e2f4f81d185a6 Mon Sep 17 00:00:00 2001 From: sparklyballs Date: Sun, 10 Jul 2016 14:11:06 +0100 Subject: [PATCH 1/4] rebase to alpine linux --- Dockerfile | 221 +++++++++++++++++---------------- README.md | 21 ++-- defaults/excludes | 13 -- init/10_dbus.sh | 8 -- init/30_set_config.sh | 8 -- root/etc/cont-init.d/20-dbus | 6 + root/etc/cont-init.d/30-config | 25 ++++ root/etc/services.d/avahi/run | 8 ++ root/etc/services.d/dbus/run | 6 + root/etc/services.d/forked/run | 4 + services/avahi/run | 3 - services/dbus/run | 3 - services/forked-daapd/run | 2 - 13 files changed, 175 insertions(+), 153 deletions(-) delete mode 100644 defaults/excludes delete mode 100644 init/10_dbus.sh delete mode 100644 init/30_set_config.sh create mode 100644 root/etc/cont-init.d/20-dbus create mode 100644 root/etc/cont-init.d/30-config create mode 100644 root/etc/services.d/avahi/run create mode 100644 root/etc/services.d/dbus/run create mode 100644 root/etc/services.d/forked/run delete mode 100644 services/avahi/run delete mode 100644 services/dbus/run delete mode 100644 services/forked-daapd/run diff --git a/Dockerfile b/Dockerfile index 3ab6347..aa457a9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,120 +1,125 @@ -FROM linuxserver/baseimage -MAINTAINER sparklyballs +FROM lsiobase/alpine +MAINTAINER sparklyballs -ENV APTLIST="avahi-daemon libavahi-client3 libav-tools libantlr3c-3.2-0 \ -libconfuse0 libgcrypt20 libgnutls28 libjson0 libmp3lame0 libprotobuf-c0 \ -libmxml1 libplist1 libunistring0" +# package version +ARG FORKED_DAAPD_NAME="forked-daapd" +ARG FORKED_DAAPD_VER="24.1" -ENV BUILD_APTLIST="antlr3 autoconf autotools-dev automake build-essential cmake gawk gettext git-core gperf \ -libasound2-dev libantlr3c-dev libavahi-client-dev libavcodec-dev libavfilter-dev libavformat-dev \ -libavutil-dev libconfuse-dev libgcrypt11-dev libgnutls28-dev libjson0-dev libplist-dev libprotobuf-c0-dev \ -libreadline-dev libtool libunistring-dev libswscale-dev libmxml-dev zlib1g-dev" +# environment settings +ARG ALL_SRC="/tmp/source" +ARG ANTLR_WWW="http://www.antlr3.org/download/antlr-3.4-complete.jar" +ARG FORKED_DAAPD_SRC="${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}" +ARG FORKED_DAAPD_WWW="https://github.com/ejurgensen/forked-daapd/archive/${FORKED_DAAPD_VER}.tar.gz" -# set source versions -ENV CURL_VER="7.47.1" LIBEVENT_VER="2.1.5-beta" TAGLIB_VER="1.9.1" SQLITE_VER="autoconf-3110000" +# install build packages +RUN \ + apk add --no-cache --virtual=build-dependencies \ + alsa-lib-dev \ + autoconf \ + automake \ + avahi-dev \ + bash \ + bsd-compat-headers \ + confuse-dev \ + curl \ + curl-dev \ + ffmpeg-dev \ + file \ + flac-dev \ + g++ \ + gcc \ + gettext-dev \ + gnutls-dev \ + gperf \ + json-c-dev \ + libcurl \ + libevent-dev \ + libgcrypt-dev \ + libogg-dev \ + libplist-dev \ + libtool \ + libunistring-dev \ + make \ + openjdk8-jre-base \ + protobuf-c-dev \ + sqlite-dev \ + taglib-dev \ + tar && \ + apk add --no-cache --virtual=build-dependencies2 \ + --repository http://nl.alpinelinux.org/alpine/edge/testing \ + libantlr3c-dev \ + libavl-dev \ + mxml-dev && \ -# add excludes file -ADD defaults/excludes /etc/dpkg/dpkg.cfg.d/excludes +# make folders and antlr wrapper + mkdir -p \ + "${FORKED_DAAPD_SRC}" && \ + echo \ + "#!/bin/bash" > "${ALL_SRC}/antlr3" && \ + echo \ + "exec java -cp $ALL_SRC/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> "${ALL_SRC}/antlr3" && \ + chmod a+x "${ALL_SRC}/antlr3" && \ -# install build dependencies -RUN apt-get update && \ -apt-get install $APTLIST \ -$BUILD_APTLIST -qy && \ +# fetch source + curl -o \ + "${ALL_SRC}/antlr-3.4-complete.jar" -L \ + "${ANTLR_WWW}" && \ + curl -o \ + "${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}.tar.gz" -L \ + "${FORKED_DAAPD_WWW}" && \ + tar xf "${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}.tar.gz" -C \ + "${FORKED_DAAPD_SRC}" --strip-components=1 && \ -# fetch source code -mkdir -p /tmp/curl /tmp/taglib /tmp/libevent /tmp/sqlite /tmp/spotify && \ -curl -o /tmp/curl.tar.gz -L http://curl.haxx.se/download/curl-$CURL_VER.tar.gz && \ -curl -o /tmp/taglib.tar.gz -L http://taglib.github.io/releases/taglib-$TAGLIB_VER.tar.gz && \ -curl -o /tmp/libevent.tar.gz -L https://qa.debian.org/watch/sf.php/levent/libevent-$LIBEVENT_VER.tar.gz && \ -curl -o /tmp/sqlite.tar.gz -L https://www.sqlite.org/2016/sqlite-$SQLITE_VER.tar.gz && \ -curl -o /tmp/spotify_tar.gz -L https://developer.spotify.com/download/libspotify/libspotify-12.1.51-Linux-x86_64-release.tar.gz && \ -tar xvf /tmp/curl.tar.gz -C /tmp/curl --strip-components=1 && \ -tar xvf /tmp/taglib.tar.gz -C /tmp/taglib --strip-components=1 && \ -tar xvf /tmp/libevent.tar.gz -C /tmp/libevent --strip-components=1 && \ -tar xvf /tmp/sqlite.tar.gz -C /tmp/sqlite --strip-components=1 && \ -tar xvf /tmp/spotify_tar.gz -C /tmp/spotify --strip-components=1 && \ -git clone https://github.com/ejurgensen/forked-daapd.git /tmp/forked-daapd && \ - -# build curl package -cd /tmp/curl && \ -./configure \ ---prefix=/usr \ ---with-ssl \ ---with-zlib && \ -make && \ -make install && \ - -# build taglib package -cd /tmp/taglib && \ -cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_RELEASE_TYPE=Release . && \ -make && \ -make install && \ -ldconfig && \ - -# build libevent package -cd /tmp/libevent && \ -./configure && \ -make && \ -make install && \ - -# build sqlite package -cd /tmp/sqlite && \ -sed -i '/^AM_CFLAGS =/ s/$/ -DSQLITE_ENABLE_UNLOCK_NOTIFY/' /tmp/sqlite/Makefile.in && \ -sed -i '/^AM_CFLAGS =/ s/$/ -DSQLITE_ENABLE_UNLOCK_NOTIFY/' /tmp/sqlite/Makefile.am && \ -./configure && \ -make && \ -make install && \ - -# build spotify -cd /tmp/spotify && \ -make install prefix=/usr && \ - -# configure and build forked-daapd -cd /tmp/forked-daapd && \ -autoreconf -i && \ -./configure \ ---enable-itunes \ ---enable-mpd \ ---enable-lastfm \ ---enable-spotify \ ---enable-chromecast \ ---prefix=/app \ ---sysconfdir=/etc \ ---localstatedir=/var && \ -make && \ -make install && \ -cd / && \ - -# clean build dependencies -apt-get purge --remove \ -$BUILD_APTLIST -y && \ -apt-get -y autoremove && \ - -# install runtime dependencies -apt-get update -q && \ -apt-get install \ -$APTLIST -qy && \ +# configure and compile source + export PATH="$ALL_SRC:$PATH" && \ + cd "${FORKED_DAAPD_SRC}" && \ + autoreconf -i -v && \ + ./configure \ + --build=$CBUILD \ + --enable-chromecast \ + --enable-itunes \ + --enable-lastfm \ + --enable-mpd \ + --host=$CHOST \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --mandir=/usr/share/man \ + --prefix=/app \ + --sysconfdir=/etc && \ + make && \ + make install && \ + cp /etc/forked-daapd.conf /etc/forked-daapd.conf.orig && \ # cleanup -apt-get clean && rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/* + apk del --purge \ + build-dependencies \ + build-dependencies2 && \ + rm -rf \ + /tmp/* -# Adding Custom files -ADD init/ /etc/my_init.d/ -ADD services/ /etc/service/ -RUN chmod -v +x /etc/service/*/run /etc/my_init.d/*.sh && \ +# install runtime packages +RUN \ + apk add --no-cache \ + avahi \ + confuse \ + dbus \ + ffmpeg \ + json-c \ + libcurl \ + libevent \ + libgcrypt \ + libplist \ + libunistring \ + protobuf-c \ + sqlite \ + sqlite-libs && \ + apk add --no-cache \ + --repository http://nl.alpinelinux.org/alpine/edge/testing \ + libantlr3c \ + mxml -# tweak config for forked-daapd -mv /etc/forked-daapd.conf /defaults/forked-daapd.conf && \ -sed -i -e 's/\(uid.*=\).*/\1 \"abc\"/g' /defaults/forked-daapd.conf && \ -sed -i s#"My Music on %h"#"LS.IO Music"#g /defaults/forked-daapd.conf && \ -sed -i s#"ipv6 = yes"#"ipv6 = no"#g /defaults/forked-daapd.conf && \ -sed -i s#/srv/music#/music#g /defaults/forked-daapd.conf && \ -sed -i s#/var/cache/forked-daapd/songs3.db#/config/dbase_and_logs/songs3.db#g /defaults/forked-daapd.conf && \ -sed -i s#/var/cache/forked-daapd/cache.db#/config/dbase_and_logs/cache.db#g /defaults/forked-daapd.conf && \ -sed -i s#/var/log/forked-daapd.log#/config/dbase_and_logs/forked-daapd.log#g /defaults/forked-daapd.conf && \ -sed -i "/db_path\ =/ s/# *//" /defaults/forked-daapd.conf && \ -sed -i "/cache_path\ =/ s/# *//" /defaults/forked-daapd.conf +# copy local files +COPY root/ / -# set volumes +# ports and volumes VOLUME /config /music - diff --git a/README.md b/README.md index 8ca54b2..ed5fd02 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,13 @@ DAAP (iTunes) media server with support for AirPlay devices, Apple Remote (and c ## Usage ``` -docker create --name=daapd -v :/config \ --v :/music -e PGID= -e PUID= \ ---net=host lsiodev/daapd +docker create \ +--name=daapd \ +-v :/config \ +-v :/music \ +-e PGID= -e PUID= \ +--net=host \ +lsiodev/daapd ``` **Parameters** @@ -27,7 +31,7 @@ docker create --name=daapd -v :/config \ * `-e PGID` for GroupID - see below for explanation * `-e PUID` for UserID - see below for explanation -It is based on phusion-baseimage with ssh removed, for shell access whilst the container is running do `docker exec -it daapd /bin/bash`. +It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it daapd /bin/bash`. ### User / Group Identifiers @@ -51,8 +55,9 @@ For further setup options of remotes etc, check out the daapd website, [Forked-d ## Versions -+ **28.02.2016:** Add chromecast support, bump dependency versions. -+ **04.01.2016:** Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. -+ **17.12.2015:** Add in spotify support. -+ **25.11.2015:** Initial Release. ++ **10.07.16:** Rebase to alpine linux for smaller image. ++ **28.02.16:** Add chromecast support, bump dependency versions. ++ **04.01.16:** Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. ++ **17.12.15:** Add in spotify support. ++ **25.11.15:** Initial Release. diff --git a/defaults/excludes b/defaults/excludes deleted file mode 100644 index 3574d10..0000000 --- a/defaults/excludes +++ /dev/null @@ -1,13 +0,0 @@ -path-exclude /usr/share/doc/* -# we need to keep copyright files for legal reasons -path-include /usr/share/doc/*/copyright -path-exclude /usr/share/man/* -path-exclude /usr/share/groff/* -path-exclude /usr/share/info/* -# lintian stuff is small, but really unnecessary -path-exclude /usr/share/lintian/* -path-exclude /usr/share/linda/* -# Drop locales except English -path-exclude=/usr/share/locale/* -path-include=/usr/share/locale/en/* -path-include=/usr/share/locale/locale.alias diff --git a/init/10_dbus.sh b/init/10_dbus.sh deleted file mode 100644 index 68ad650..0000000 --- a/init/10_dbus.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -[[ -e /var/run/dbus/pid ]] && rm -f /var/run/dbus/pid - -mkdir -p /var/run/dbus -chown messagebus:messagebus /var/run/dbus -dbus-uuidgen --ensure -sleep 1 diff --git a/init/30_set_config.sh b/init/30_set_config.sh deleted file mode 100644 index c4d06c5..0000000 --- a/init/30_set_config.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -[[ ! -f /config/forked-daapd.conf ]] && cp /defaults/forked-daapd.conf /config/forked-daapd.conf -[[ ! -L /etc/forked-daapd.conf && -f /etc/forked-daapd.conf ]] && rm /etc/forked-daapd.conf -[[ ! -L /etc/forked-daapd.conf ]] && ln -s /config/forked-daapd.conf /etc/forked-daapd.conf - -mkdir -p /config/dbase_and_logs /daapd-pidfolder -chown -R abc:abc /config /daapd-pidfolder /app diff --git a/root/etc/cont-init.d/20-dbus b/root/etc/cont-init.d/20-dbus new file mode 100644 index 0000000..12c542b --- /dev/null +++ b/root/etc/cont-init.d/20-dbus @@ -0,0 +1,6 @@ +#!/usr/bin/with-contenv bash + +[[ -e /var/run/dbus.pid ]] && rm -f /var/run/dbus.pid + +dbus-uuidgen --ensure +sleep 1 diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config new file mode 100644 index 0000000..d7024d4 --- /dev/null +++ b/root/etc/cont-init.d/30-config @@ -0,0 +1,25 @@ +#!/usr/bin/with-contenv bash + +# configure defaults copy of conf +if [ ! -e "/defaults/forked-daapd.conf" ]; then +cp /etc/forked-daapd.conf.orig /defaults/forked-daapd.conf +sed -i -e 's/\(uid.*=\).*/\1 \"abc\"/g' /defaults/forked-daapd.conf +sed -i s#"My Music on %h"#"LS.IO Music"#g /defaults/forked-daapd.conf +sed -i s#"ipv6 = yes"#"ipv6 = no"#g /defaults/forked-daapd.conf +sed -i s#/srv/music#/music#g /defaults/forked-daapd.conf +sed -i s#/var/cache/forked-daapd/songs3.db#/config/dbase_and_logs/songs3.db#g /defaults/forked-daapd.conf +sed -i s#/var/cache/forked-daapd/cache.db#/config/dbase_and_logs/cache.db#g /defaults/forked-daapd.conf +sed -i s#/var/log/forked-daapd.log#/config/dbase_and_logs/forked-daapd.log#g /defaults/forked-daapd.conf +sed -i "/db_path\ =/ s/# *//" /defaults/forked-daapd.conf +sed -i "/cache_path\ =/ s/# *//" /defaults/forked-daapd.conf +fi + +# symlink conf to /conf +[[ ! -f /config/forked-daapd.conf ]] && cp /defaults/forked-daapd.conf /config/forked-daapd.conf +[[ ! -L /etc/forked-daapd.conf && -f /etc/forked-daapd.conf ]] && rm /etc/forked-daapd.conf +[[ ! -L /etc/forked-daapd.conf ]] && ln -s /config/forked-daapd.conf /etc/forked-daapd.conf + +# make folders and set permissions +mkdir -p /config/dbase_and_logs /daapd-pidfolder +chown -R abc:abc /config /daapd-pidfolder /app + diff --git a/root/etc/services.d/avahi/run b/root/etc/services.d/avahi/run new file mode 100644 index 0000000..e438886 --- /dev/null +++ b/root/etc/services.d/avahi/run @@ -0,0 +1,8 @@ +#!/usr/bin/with-contenv bash + +until [[ -e /var/run/dbus/system_bus_socket ]]; do +sleep 1s +done + +echo "Starting Avahi daemon" +exec avahi-daemon --no-chroot diff --git a/root/etc/services.d/dbus/run b/root/etc/services.d/dbus/run new file mode 100644 index 0000000..1f0453c --- /dev/null +++ b/root/etc/services.d/dbus/run @@ -0,0 +1,6 @@ +#!/usr/bin/with-contenv bash + +echo "Starting dbus-daemon" +exec dbus-daemon --system --nofork + + diff --git a/root/etc/services.d/forked/run b/root/etc/services.d/forked/run new file mode 100644 index 0000000..b3bd56e --- /dev/null +++ b/root/etc/services.d/forked/run @@ -0,0 +1,4 @@ +#!/usr/bin/with-contenv bash + +exec s6-setuidgid abc /app/sbin/forked-daapd -f -P /daapd-pidfolder/forked-daapd.pid + diff --git a/services/avahi/run b/services/avahi/run deleted file mode 100644 index 3ebaef3..0000000 --- a/services/avahi/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec avahi-daemon --no-chroot diff --git a/services/dbus/run b/services/dbus/run deleted file mode 100644 index b8b26b8..0000000 --- a/services/dbus/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec dbus-daemon --system --nofork diff --git a/services/forked-daapd/run b/services/forked-daapd/run deleted file mode 100644 index 7322dcb..0000000 --- a/services/forked-daapd/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec /sbin/setuser abc /app/sbin/forked-daapd -f -P /daapd-pidfolder/forked-daapd.pid From 70414ac26a10bb7ecb4aa27f65d1d13314de8360 Mon Sep 17 00:00:00 2001 From: sparklyballs Date: Tue, 12 Jul 2016 11:59:36 +0100 Subject: [PATCH 2/4] restructure and simplify variables in dockerfile --- Dockerfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa457a9..52a326c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,9 +6,9 @@ ARG FORKED_DAAPD_NAME="forked-daapd" ARG FORKED_DAAPD_VER="24.1" # environment settings -ARG ALL_SRC="/tmp/source" ARG ANTLR_WWW="http://www.antlr3.org/download/antlr-3.4-complete.jar" -ARG FORKED_DAAPD_SRC="${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}" +ARG FORKED_DAAPD_ROOT="/tmp/source" +ARG FORKED_DAAPD_SRC="${FORKED_DAAPD_ROOT}/forked-daapd" ARG FORKED_DAAPD_WWW="https://github.com/ejurgensen/forked-daapd/archive/${FORKED_DAAPD_VER}.tar.gz" # install build packages @@ -55,23 +55,23 @@ RUN \ mkdir -p \ "${FORKED_DAAPD_SRC}" && \ echo \ - "#!/bin/bash" > "${ALL_SRC}/antlr3" && \ + "#!/bin/bash" > "${FORKED_DAAPD_ROOT}/antlr3" && \ echo \ - "exec java -cp $ALL_SRC/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> "${ALL_SRC}/antlr3" && \ - chmod a+x "${ALL_SRC}/antlr3" && \ + "exec java -cp $FORKED_DAAPD_ROOT/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> "${FORKED_DAAPD_ROOT}/antlr3" && \ + chmod a+x "${FORKED_DAAPD_ROOT}/antlr3" && \ # fetch source curl -o \ - "${ALL_SRC}/antlr-3.4-complete.jar" -L \ + "${FORKED_DAAPD_ROOT}/antlr-3.4-complete.jar" -L \ "${ANTLR_WWW}" && \ curl -o \ - "${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}.tar.gz" -L \ + "${FORKED_DAAPD_ROOT}/forked.tar.gz" -L \ "${FORKED_DAAPD_WWW}" && \ - tar xf "${ALL_SRC}/${FORKED_DAAPD_NAME}-${FORKED_DAAPD_VER}.tar.gz" -C \ + tar xf "${FORKED_DAAPD_ROOT}/forked.tar.gz" -C \ "${FORKED_DAAPD_SRC}" --strip-components=1 && \ # configure and compile source - export PATH="$ALL_SRC:$PATH" && \ + export PATH="$FORKED_DAAPD_ROOT:$PATH" && \ cd "${FORKED_DAAPD_SRC}" && \ autoreconf -i -v && \ ./configure \ From 93a92135b1da016b87474df82909b123188f6a55 Mon Sep 17 00:00:00 2001 From: sparklyballs Date: Sat, 13 Aug 2016 01:46:37 +0100 Subject: [PATCH 3/4] tidy up, use less variables --- Dockerfile | 33 ++++++++------------ README.md | 7 ++--- root/etc/cont-init.d/30-config | 25 --------------- root/etc/cont-init.d/{20-dbus => 30-dbus} | 3 +- root/etc/cont-init.d/40-config | 37 +++++++++++++++++++++++ root/etc/services.d/avahi/run | 4 +-- root/etc/services.d/dbus/run | 4 +-- root/etc/services.d/forked/run | 5 +-- 8 files changed, 62 insertions(+), 56 deletions(-) delete mode 100644 root/etc/cont-init.d/30-config rename root/etc/cont-init.d/{20-dbus => 30-dbus} (51%) create mode 100644 root/etc/cont-init.d/40-config diff --git a/Dockerfile b/Dockerfile index 52a326c..9e66ea3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,14 +2,7 @@ FROM lsiobase/alpine MAINTAINER sparklyballs # package version -ARG FORKED_DAAPD_NAME="forked-daapd" -ARG FORKED_DAAPD_VER="24.1" - -# environment settings -ARG ANTLR_WWW="http://www.antlr3.org/download/antlr-3.4-complete.jar" -ARG FORKED_DAAPD_ROOT="/tmp/source" -ARG FORKED_DAAPD_SRC="${FORKED_DAAPD_ROOT}/forked-daapd" -ARG FORKED_DAAPD_WWW="https://github.com/ejurgensen/forked-daapd/archive/${FORKED_DAAPD_VER}.tar.gz" +ARG DAAPD_VER="24.1" # install build packages RUN \ @@ -53,26 +46,26 @@ RUN \ # make folders and antlr wrapper mkdir -p \ - "${FORKED_DAAPD_SRC}" && \ + /tmp/source/forked-daapd && \ echo \ - "#!/bin/bash" > "${FORKED_DAAPD_ROOT}/antlr3" && \ + "#!/bin/bash" > /tmp/source/antlr3 && \ echo \ - "exec java -cp $FORKED_DAAPD_ROOT/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> "${FORKED_DAAPD_ROOT}/antlr3" && \ - chmod a+x "${FORKED_DAAPD_ROOT}/antlr3" && \ + "exec java -cp /tmp/source/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> /tmp/source/antlr3 && \ + chmod a+x /tmp/source/antlr3 && \ # fetch source curl -o \ - "${FORKED_DAAPD_ROOT}/antlr-3.4-complete.jar" -L \ - "${ANTLR_WWW}" && \ + /tmp/source/antlr-3.4-complete.jar -L \ + http://www.antlr3.org/download/antlr-3.4-complete.jar && \ curl -o \ - "${FORKED_DAAPD_ROOT}/forked.tar.gz" -L \ - "${FORKED_DAAPD_WWW}" && \ - tar xf "${FORKED_DAAPD_ROOT}/forked.tar.gz" -C \ - "${FORKED_DAAPD_SRC}" --strip-components=1 && \ + /tmp/source/forked.tar.gz -L \ + "https://github.com/ejurgensen/forked-daapd/archive/${DAAPD_VER}.tar.gz" && \ + tar xf /tmp/source/forked.tar.gz -C \ + /tmp/source/forked-daapd --strip-components=1 && \ # configure and compile source - export PATH="$FORKED_DAAPD_ROOT:$PATH" && \ - cd "${FORKED_DAAPD_SRC}" && \ + export PATH="/tmp/source:$PATH" && \ + cd /tmp/source/forked-daapd && \ autoreconf -i -v && \ ./configure \ --build=$CBUILD \ diff --git a/README.md b/README.md index ed5fd02..e2e3aeb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r # lsiodev/daapd ![](https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/daapd-git.png) -DAAP (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Spotify, Chromecast, MPD and internet radio. [Forked-daapd](https://ejurgensen.github.io/forked-daapd/) +DAAP (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. [Forked-daapd](https://ejurgensen.github.io/forked-daapd/) ## Usage @@ -55,9 +55,8 @@ For further setup options of remotes etc, check out the daapd website, [Forked-d ## Versions -+ **10.07.16:** Rebase to alpine linux for smaller image. ++ **13.08.16:** Rebase to alpine linux. + **28.02.16:** Add chromecast support, bump dependency versions. + **04.01.16:** Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. + **17.12.15:** Add in spotify support. -+ **25.11.15:** Initial Release. - ++ **25.11.15:** Initial Release. diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config deleted file mode 100644 index d7024d4..0000000 --- a/root/etc/cont-init.d/30-config +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/with-contenv bash - -# configure defaults copy of conf -if [ ! -e "/defaults/forked-daapd.conf" ]; then -cp /etc/forked-daapd.conf.orig /defaults/forked-daapd.conf -sed -i -e 's/\(uid.*=\).*/\1 \"abc\"/g' /defaults/forked-daapd.conf -sed -i s#"My Music on %h"#"LS.IO Music"#g /defaults/forked-daapd.conf -sed -i s#"ipv6 = yes"#"ipv6 = no"#g /defaults/forked-daapd.conf -sed -i s#/srv/music#/music#g /defaults/forked-daapd.conf -sed -i s#/var/cache/forked-daapd/songs3.db#/config/dbase_and_logs/songs3.db#g /defaults/forked-daapd.conf -sed -i s#/var/cache/forked-daapd/cache.db#/config/dbase_and_logs/cache.db#g /defaults/forked-daapd.conf -sed -i s#/var/log/forked-daapd.log#/config/dbase_and_logs/forked-daapd.log#g /defaults/forked-daapd.conf -sed -i "/db_path\ =/ s/# *//" /defaults/forked-daapd.conf -sed -i "/cache_path\ =/ s/# *//" /defaults/forked-daapd.conf -fi - -# symlink conf to /conf -[[ ! -f /config/forked-daapd.conf ]] && cp /defaults/forked-daapd.conf /config/forked-daapd.conf -[[ ! -L /etc/forked-daapd.conf && -f /etc/forked-daapd.conf ]] && rm /etc/forked-daapd.conf -[[ ! -L /etc/forked-daapd.conf ]] && ln -s /config/forked-daapd.conf /etc/forked-daapd.conf - -# make folders and set permissions -mkdir -p /config/dbase_and_logs /daapd-pidfolder -chown -R abc:abc /config /daapd-pidfolder /app - diff --git a/root/etc/cont-init.d/20-dbus b/root/etc/cont-init.d/30-dbus similarity index 51% rename from root/etc/cont-init.d/20-dbus rename to root/etc/cont-init.d/30-dbus index 12c542b..b91e426 100644 --- a/root/etc/cont-init.d/20-dbus +++ b/root/etc/cont-init.d/30-dbus @@ -1,6 +1,7 @@ #!/usr/bin/with-contenv bash -[[ -e /var/run/dbus.pid ]] && rm -f /var/run/dbus.pid +[[ -e /var/run/dbus.pid ]] && \ + rm -f /var/run/dbus.pid dbus-uuidgen --ensure sleep 1 diff --git a/root/etc/cont-init.d/40-config b/root/etc/cont-init.d/40-config new file mode 100644 index 0000000..355412f --- /dev/null +++ b/root/etc/cont-init.d/40-config @@ -0,0 +1,37 @@ +#!/usr/bin/with-contenv bash + +# make folders +mkdir -p \ + /config/dbase_and_logs \ + /daapd-pidfolder + +# configure defaults copy of conf +if [ ! -e "/defaults/forked-daapd.conf" ]; then +cp /etc/forked-daapd.conf.orig /defaults/forked-daapd.conf +sed -i \ + -e "/cache_path\ =/ s/# *//" \ + -e "/db_path\ =/ s/# *//" \ + -e s#"ipv6 = yes"#"ipv6 = no"#g \ + -e s#"My Music on %h"#"LS.IO Music"#g \ + -e s#/srv/music#/music#g \ + -e 's/\(uid.*=\).*/\1 \"abc\"/g' \ + -e s#/var/cache/forked-daapd/cache.db#/config/dbase_and_logs/cache.db#g \ + -e s#/var/cache/forked-daapd/songs3.db#/config/dbase_and_logs/songs3.db#g \ + -e s#/var/log/forked-daapd.log#/config/dbase_and_logs/forked-daapd.log#g \ + /defaults/forked-daapd.conf +fi + +# symlink conf to /conf +[[ ! -f /config/forked-daapd.conf ]] && \ + cp /defaults/forked-daapd.conf /config/forked-daapd.conf +[[ ! -L /etc/forked-daapd.conf && -f /etc/forked-daapd.conf ]] && \ + rm /etc/forked-daapd.conf +[[ ! -L /etc/forked-daapd.conf ]] && \ + ln -s /config/forked-daapd.conf /etc/forked-daapd.conf + + +# permissions +chown -R abc:abc \ + /app \ + /config \ + /daapd-pidfolder diff --git a/root/etc/services.d/avahi/run b/root/etc/services.d/avahi/run index e438886..ea59603 100644 --- a/root/etc/services.d/avahi/run +++ b/root/etc/services.d/avahi/run @@ -4,5 +4,5 @@ until [[ -e /var/run/dbus/system_bus_socket ]]; do sleep 1s done -echo "Starting Avahi daemon" -exec avahi-daemon --no-chroot +exec \ + avahi-daemon --no-chroot diff --git a/root/etc/services.d/dbus/run b/root/etc/services.d/dbus/run index 1f0453c..5027a82 100644 --- a/root/etc/services.d/dbus/run +++ b/root/etc/services.d/dbus/run @@ -1,6 +1,6 @@ #!/usr/bin/with-contenv bash -echo "Starting dbus-daemon" -exec dbus-daemon --system --nofork +exec \ + dbus-daemon --system --nofork diff --git a/root/etc/services.d/forked/run b/root/etc/services.d/forked/run index b3bd56e..920a348 100644 --- a/root/etc/services.d/forked/run +++ b/root/etc/services.d/forked/run @@ -1,4 +1,5 @@ #!/usr/bin/with-contenv bash -exec s6-setuidgid abc /app/sbin/forked-daapd -f -P /daapd-pidfolder/forked-daapd.pid - +exec \ + s6-setuidgid abc /app/sbin/forked-daapd -f \ + -P /daapd-pidfolder/forked-daapd.pid From e74ab3929b7999cd64348735ad17c3680475974d Mon Sep 17 00:00:00 2001 From: sparklyballs Date: Sat, 17 Sep 2016 10:15:28 +0100 Subject: [PATCH 4/4] reorg dockerfile, readme, get rebase release ready. change to main repo --- .dockerignore | 6 ++++ .gitattributes | 17 +++++++++++ .github/ISSUE_TEMPLATE.md | 21 ++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 15 ++++++++++ .gitignore | 43 +++++++++++++++++++++++++++ Dockerfile | 50 +++++++++++++++----------------- README.md | 28 +++++++++++------- 7 files changed, 142 insertions(+), 38 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitattributes create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .gitignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cdb1a82 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +.gitignore +.github +.gitattributes +READMETEMPLATE.md +README.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..fa3002f --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,21 @@ + + +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://www.linuxserver.io/wp-content/uploads/2015/06/linuxserver_medium.png)][linuxserverurl] + + + + + + + + + + + + + + + +## Thanks, team linuxserver.io + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..677c442 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ + + +[linuxserverurl]: https://linuxserver.io +[![linuxserver.io](https://www.linuxserver.io/wp-content/uploads/2015/06/linuxserver_medium.png)][linuxserverurl] + + + + + + + + + +## Thanks, team linuxserver.io + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96374c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# ========================= +# Operating System Files +# ========================= + +# OSX +# ========================= + +.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/Dockerfile b/Dockerfile index 9e66ea3..38922f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,8 +4,28 @@ MAINTAINER sparklyballs # package version ARG DAAPD_VER="24.1" -# install build packages +# install runtime packages RUN \ + apk add --no-cache \ + avahi \ + confuse \ + dbus \ + ffmpeg \ + json-c \ + libcurl \ + libevent \ + libgcrypt \ + libplist \ + libunistring \ + protobuf-c \ + sqlite \ + sqlite-libs && \ + apk add --no-cache \ + --repository http://nl.alpinelinux.org/alpine/edge/testing \ + libantlr3c \ + mxml && \ + +# install build packages apk add --no-cache --virtual=build-dependencies \ alsa-lib-dev \ autoconf \ @@ -41,10 +61,9 @@ RUN \ apk add --no-cache --virtual=build-dependencies2 \ --repository http://nl.alpinelinux.org/alpine/edge/testing \ libantlr3c-dev \ - libavl-dev \ mxml-dev && \ -# make folders and antlr wrapper +# make antlr wrapper mkdir -p \ /tmp/source/forked-daapd && \ echo \ @@ -53,7 +72,7 @@ RUN \ "exec java -cp /tmp/source/antlr-3.4-complete.jar org.antlr.Tool \"\$@\"" >> /tmp/source/antlr3 && \ chmod a+x /tmp/source/antlr3 && \ -# fetch source +# compile forked-daapd curl -o \ /tmp/source/antlr-3.4-complete.jar -L \ http://www.antlr3.org/download/antlr-3.4-complete.jar && \ @@ -62,8 +81,6 @@ RUN \ "https://github.com/ejurgensen/forked-daapd/archive/${DAAPD_VER}.tar.gz" && \ tar xf /tmp/source/forked.tar.gz -C \ /tmp/source/forked-daapd --strip-components=1 && \ - -# configure and compile source export PATH="/tmp/source:$PATH" && \ cd /tmp/source/forked-daapd && \ autoreconf -i -v && \ @@ -90,27 +107,6 @@ RUN \ rm -rf \ /tmp/* -# install runtime packages -RUN \ - apk add --no-cache \ - avahi \ - confuse \ - dbus \ - ffmpeg \ - json-c \ - libcurl \ - libevent \ - libgcrypt \ - libplist \ - libunistring \ - protobuf-c \ - sqlite \ - sqlite-libs && \ - apk add --no-cache \ - --repository http://nl.alpinelinux.org/alpine/edge/testing \ - libantlr3c \ - mxml - # copy local files COPY root/ / diff --git a/README.md b/README.md index e2e3aeb..99fc4a3 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,21 @@ -![https://linuxserver.io](https://www.linuxserver.io/wp-content/uploads/2015/06/linuxserver_medium.png) +[linuxserverurl]: https://linuxserver.io +[forumurl]: https://forum.linuxserver.io +[ircurl]: https://www.linuxserver.io/index.php/irc/ +[podcasturl]: https://www.linuxserver.io/index.php/category/podcast/ -The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring easy user mapping and community support. Find us for support at: -* [forum.linuxserver.io](https://forum.linuxserver.io) -* [IRC](https://www.linuxserver.io/index.php/irc/) on freenode at `#linuxserver.io` -* [Podcast](https://www.linuxserver.io/index.php/category/podcast/) covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! +[![linuxserver.io](https://www.linuxserver.io/wp-content/uploads/2015/06/linuxserver_medium.png)][linuxserverurl] -# lsiodev/daapd -![](https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/daapd-git.png) +The [LinuxServer.io][linuxserverurl] team brings you another container release featuring easy user mapping and community support. Find us for support at: +* [forum.linuxserver.io][forumurl] +* [IRC][ircurl] on freenode at `#linuxserver.io` +* [Podcast][podcasturl] covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation! -DAAP (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. [Forked-daapd](https://ejurgensen.github.io/forked-daapd/) +# linuxserver/daapd +[Forked-Daapd][daapdurl] (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio. + +[![daapd](https://raw.githubusercontent.com/linuxserver/beta-templates/master/lsiodev/img/daapd-git.png)][daapdurl] +[daapdurl]: https://ejurgensen.github.io/forked-daapd/ ## Usage @@ -20,7 +26,7 @@ docker create \ -v :/music \ -e PGID= -e PUID= \ --net=host \ -lsiodev/daapd +linuxserver/daapd ``` **Parameters** @@ -47,7 +53,7 @@ In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as bel ## Setting up the application Map your music folder, open up itunes on the same LAN to see your music there. -For further setup options of remotes etc, check out the daapd website, [Forked-daapd](https://ejurgensen.github.io/forked-daapd/). +For further setup options of remotes etc, check out the daapd website, [Forked-daapd][daapdurl]. ## Logs and shell * To monitor the logs of the container in realtime `docker logs -f daapd`. @@ -55,7 +61,7 @@ For further setup options of remotes etc, check out the daapd website, [Forked-d ## Versions -+ **13.08.16:** Rebase to alpine linux. ++ **17.08.16:** Rebase to alpine linux, remove redundant spotify support. + **28.02.16:** Add chromecast support, bump dependency versions. + **04.01.16:** Disable ipv6 by default because in v23.4 it doesn't work in unraid with it set. + **17.12.15:** Add in spotify support.