Skip to content
This repository was archived by the owner on Jun 5, 2024. It is now read-only.
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
80 changes: 34 additions & 46 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,54 +1,42 @@
FROM alpine:3.3
MAINTAINER Steve Hibit <sdhibit@gmail.com>
FROM alpine:latest as builder

ARG APP_VERSION=6.2
ARG APP_REVISION=9080
ARG APP_DATE=20161222

ARG APP_NAME=madsonic
ARG APP_BASEURL="http://www.madsonic.org/download"
ARG APP_PKGNAME="${APP_DATE}_${APP_NAME}-${APP_VERSION}.${APP_REVISION}-standalone.tar.gz"
ARG APP_URL="${APP_BASEURL}/${APP_VERSION}/${APP_PKGNAME}"

RUN apk --update upgrade \
&& apk --no-cache add \
curl

RUN mkdir -p /app \
&& curl -sSL ${APP_URL} | tar xfz - -C /app

#--------------------------------------------

FROM sdhibit/alpine-s6:3.7
LABEL maintainer="Steve Hibit <sdhibit@gmail.com>"

COPY --from=builder /app ${APP_PATH}

# Install apk packages
RUN apk --update upgrade \
&& apk add \
openjdk8-jre-base \
unzip \
wget \
&& rm /var/cache/apk/*

# Set Madsonic Package Information
ENV PKG_NAME madsonic
ENV PKG_VER 6.1.8120
ENV PKG_VERA 6.1
ENV PKG_DATE 20160304
ENV APP_BASEURL http://www.madsonic.org/download
ENV APP_PKGNAME ${PKG_DATE}_${PKG_NAME}-${PKG_VER}-standalone.zip
ENV TRAN_PKGNAME ${PKG_DATE}_${PKG_NAME}-transcode-linux-x64.zip
ENV APP_URL ${APP_BASEURL}/${PKG_VERA}/${APP_PKGNAME}
ENV TRAN_URL ${APP_BASEURL}/transcode/${TRAN_PKGNAME}
ENV APP_PATH /var/madsonic

# Download & Install Madsonic
RUN mkdir -p "${APP_PATH}/transcode" \
&& wget -O "${APP_PATH}/madsonic.zip" ${APP_URL} \
&& wget -O "${APP_PATH}/transcode/transcode.zip" ${TRAN_URL} \
&& unzip "${APP_PATH}/madsonic.zip" -d ${APP_PATH} \
&& unzip "${APP_PATH}/transcode/transcode.zip" -d "${APP_PATH}/transcode" \
&& rm "${APP_PATH}/madsonic.zip" \
&& rm "${APP_PATH}/transcode/transcode.zip"

# Create user and change ownership
RUN mkdir /config \
&& addgroup -g 666 -S madsonic \
&& adduser -u 666 -SHG madsonic madsonic \
&& chown -R madsonic:madsonic \
${APP_PATH} \
"/config"
&& apk --no-cache add \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
ffmpeg \
lame \
libressl \
openjdk8-jre-base

COPY root /

RUN chmod -R +x /etc/services.d/*/run

VOLUME ["/config"]

# HTTP ports
EXPOSE 4040
EXPOSE 4050

# Add run script
ADD madsonic.sh /madsonic.sh
RUN chmod +x /madsonic.sh

USER madsonic
WORKDIR /var/madsonic

CMD ["/madsonic.sh"]
35 changes: 0 additions & 35 deletions madsonic.sh

This file was deleted.

87 changes: 87 additions & 0 deletions root/etc/services.d/madsonic/run
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/usr/bin/with-contenv sh

APP_UID=${APP_UID:-666}
APP_GID=${APP_GID:-666}
APP_USER=${APP_USER:-appuser}

KEEP_TRANSCODE=${KEEP_TRANSCODE:-"false"}

CONFIG_PATH=${HOME_PATH:-"/config"}
CONTEXT=${CONTEXT:-"/"}
MEDIA_PATH=${MEDIA_PATH:-"/media"}
PODCAST_PATH=${PODCAST_PATH:-"/podcast"}
PLAYLIST_PATH=${PLAYLIST_PATH:-"/playlist"}
TRANSCODE_PATH=${TRANSCODE_PATH:-"/app/transcode"}

MADSONIC_HOME=$CONFIG_PATH
MADSONIC_HOST=0.0.0.0
MADSONIC_PORT=4040
MADSONIC_HTTPS_PORT=0
MADSONIC_CONTEXT_PATH=$CONTEXT
MADSONIC_INIT_MEMORY=256
MADSONIC_MAX_MEMORY=512
MADSONIC_DEFAULT_MUSIC_FOLDER=$MEDIA_PATH
MADSONIC_DEFAULT_UPLOAD_FOLDER=/config/media/incoming
MADSONIC_DEFAULT_PODCAST_FOLDER=$PODCAST_PATH
MADSONIC_DEFAULT_PLAYLIST_IMPORT_FOLDER="$PLAYLIST_PATH/import"
MADSONIC_DEFAULT_PLAYLIST_EXPORT_FOLDER="$PLAYLIST_PATH/export"
MADSONIC_DEFAULT_PLAYLIST_BACKUP_FOLDER="$PLAYLIST_PATH/backup"
MADSONIC_DEFAULT_TRANSCODE_FOLDER=$TRANSCODE_PATH
MADSONIC_DEFAULT_TIMEZONE=
MADSONIC_PIDFILE=
MADSONIC_UPDATE=true
MADSONIC_GZIP=
MADSONIC_DB=
quiet=0

mkdir -p $MADSONIC_DEFAULT_UPLOAD_FOLDER
mkdir -p $MADSONIC_DEFAULT_PODCAST_FOLDER
mkdir -p $MADSONIC_DEFAULT_PLAYLIST_IMPORT_FOLDER
mkdir -p $MADSONIC_DEFAULT_PLAYLIST_EXPORT_FOLDER
mkdir -p $MADSONIC_DEFAULT_PLAYLIST_BACKUP_FOLDER
mkdir -p $MADSONIC_DEFAULT_TRANSCODE_FOLDER

# Use JAVA_HOME if set, otherwise assume java is in the path.
JAVA=java
if [ -e "${JAVA_HOME}" ]
then
JAVA=${JAVA_HOME}/bin/java
fi

# Use system install of ffmpeg for transcoding
if [ "$KEEP_TRANSCODE" == "false" ]; then
[ ! -d $MADSONIC_DEFAULT_TRANSCODE_FOLDER ] || rm -r $MADSONIC_DEFAULT_TRANSCODE_FOLDER
mkdir -p $MADSONIC_DEFAULT_TRANSCODE_FOLDER
ln -s "$(command -v ffmpeg)" $MADSONIC_DEFAULT_TRANSCODE_FOLDER/ffmpeg
ln -s "$(command -v lame)" $MADSONIC_DEFAULT_TRANSCODE_FOLDER/lame
fi

# Create Madsonic home directory.
mkdir -p ${MADSONIC_HOME}
LOG=${MADSONIC_HOME}/madsonic_sh.log
rm -f ${LOG}

if [ -e "${APP_PATH}" ]
then
cd ${APP_PATH}
fi

s6-setuidgid ${APP_USER} ${JAVA} -Xms${MADSONIC_INIT_MEMORY}m -Xmx${MADSONIC_MAX_MEMORY}m \
-Dmadsonic.home=${MADSONIC_HOME} \
-Dmadsonic.host=${MADSONIC_HOST} \
-Dmadsonic.port=${MADSONIC_PORT} \
-Dmadsonic.httpsPort=${MADSONIC_HTTPS_PORT} \
-Dmadsonic.contextPath=${MADSONIC_CONTEXT_PATH} \
-Dmadsonic.defaultMusicFolder=${MADSONIC_DEFAULT_MUSIC_FOLDER} \
-Dmadsonic.defaultUploadFolder=${MADSONIC_DEFAULT_UPLOAD_FOLDER} \
-Dmadsonic.defaultPodcastFolder=${MADSONIC_DEFAULT_PODCAST_FOLDER} \
-Dmadsonic.defaultPlaylistImportFolder=${MADSONIC_DEFAULT_PLAYLIST_IMPORT_FOLDER} \
-Dmadsonic.defaultPlaylistExportFolder=${MADSONIC_DEFAULT_PLAYLIST_EXPORT_FOLDER} \
-Dmadsonic.defaultPlaylistBackupFolder=${MADSONIC_DEFAULT_PLAYLIST_BACKUP_FOLDER} \
-Dmadsonic.defaultTranscodeFolder=${MADSONIC_DEFAULT_TRANSCODE_FOLDER} \
-Duser.timezone=${MADSONIC_DEFAULT_TIMEZONE} \
-Dmadsonic.update=${MADSONIC_UPDATE} \
-Dmadsonic.gzip=${MADSONIC_GZIP} \
-Dmadsonic.db="${MADSONIC_DB}" \
-Djava.awt.headless=true \
-jar madsonic-booter.jar >> ${LOG} 2>&1