diff --git a/Dockerfile b/Dockerfile index f1387f5..2190f3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,10 @@ FROM debian:8 MAINTAINER Dominique Barton +# +# Install all required dependencies. +# + RUN apt-get -q update \ && apt-get install -qy git python-pip python-dev libz-dev libxml2-dev libxslt1-dev gcc \ && pip install cheetah lxml pyopenssl \ @@ -10,21 +14,38 @@ RUN apt-get -q update \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /tmp/* +# +# Create user and group for CouchPotato. +# + RUN groupadd -r -g 666 couchpotato \ && useradd -r -u 666 -g 666 -d /couchpotato couchpotato +# +# Get CouchPotato repository. +# + RUN git clone -b master https://github.com/RuudBurger/CouchPotatoServer.git /couchpotato \ && chown -R couchpotato: /couchpotato -ADD start.sh /start.sh -RUN chown couchpotato: /start.sh \ - && chmod 755 /start.sh +# +# Add CouchPotato init script. +# -VOLUME ["/datadir", "/media"] +ADD couchpotato.sh /couchpotato.sh +RUN chmod 755 /couchpotato.sh -EXPOSE 8080 +# +# Define container settings. +# -USER couchpotato +VOLUME ["/datadir", "/download"] + +EXPOSE 5000 + +# +# Start CouchPotato. +# WORKDIR /couchpotato -CMD ["/start.sh"] +CMD ["/couchpotato.sh"] diff --git a/couchpotato.sh b/couchpotato.sh new file mode 100644 index 0000000..2d82de0 --- /dev/null +++ b/couchpotato.sh @@ -0,0 +1,65 @@ +#!/bin/sh +set -e + +# +# Display settings on standard out. +# + +USER="couchpotato" + +echo "CouchPotato settings" +echo "====================" +echo +echo " User: ${USER}" +echo " UID: ${CP_UID:=666}" +echo " GID: ${CP_GID:=666}" +echo +echo " Config: ${CONFIG:=/datadir/config.ini}" +echo " Version: ${VERSION:=master}" +echo + +# +# Change UID / GID of CouchPotato user. +# + +printf "Updating UID / GID... " +[[ $(id -u ${USER}) == ${CP_UID} ]] || usermod -o -u ${CP_UID} ${USER} +[[ $(id -g ${USER}) == ${CP_GID} ]] || groupmod -o -g ${CP_GID} ${USER} +echo "[DONE]" + +# +# Set directory permissions. +# + +printf "Set permissions... " +touch ${CONFIG} +chown -R ${USER}: /couchpotato +chown ${USER}: /datadir /media $(dirname ${CONFIG}) +echo "[DONE]" + +# +# Update CouchPotato and checkout requested version. +# + +printf "Updating CouchPotato git repository... " +git pull -q +echo "[DONE]" + +printf "Getting current version... " +CURRENT_VERSION=$(git rev-parse --abbrev-ref HEAD) +echo "[${CURRENT_VERSION}]" + +if [[ "${CURRENT_VERSION}" == "${VERSION}" ]] +then + printf "Checking out CouchPotato version '${VERSION}'... " + git checkout -q ${VERSION} + echo "[DONE]" +fi + +# +# Finally, start CouchPotato. +# + +CONFIG=${CONFIG:-/datadir/config.ini} +echo "Starting CouchPotato..." +exec ./CouchPotato.py --data_dir=$(dirname ${CONFIG}) --config_file=${CONFIG}