From b739ed3e40b675ab40188832fc133344dd11b9ad Mon Sep 17 00:00:00 2001 From: icedream Date: Sat, 24 Oct 2015 10:21:16 +0200 Subject: [PATCH] Move build to a single install script to save on layers/space. --- Dockerfile | 57 ++++------------------------------------------------- setup.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 53 deletions(-) create mode 100644 setup.sh diff --git a/Dockerfile b/Dockerfile index 7595cdf..db5a4b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,63 +1,14 @@ FROM phusion/passenger-nodejs:0.9.17 -# get rid of useless services -RUN rm -r /etc/service/cron /etc/service/nginx /etc/service/nginx-log-forwarder - -# prepare APT with only the repositories we want -RUN rm /etc/apt/sources.list.d/* &&\ - add-apt-repository ppa:mc3man/trusty-media -y &&\ - DEBIAN_FRONTEND=noninteractive curl -sL https://deb.nodesource.com/setup_4.x | bash - &&\ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - nodejs \ - blackbox xvfb xdotool \ - pulseaudio pulseaudio-utils \ - dbus \ - python python-minimal python-pkg-resources rtmpdump ffmpeg \ - vlc vlc-plugin-pulse - -# initialize DBus -RUN mkdir -p /var/run/dbus && \ - chown messagebus:messagebus /var/run/dbus && \ - dbus-uuidgen --ensure - -# configure gui user -RUN mkdir -p /config &&\ - ln -sf /config ~app/.ts3bot - -# install teamspeak3 -# Original comment that used to be here: temporary non-interactive teamspeak3 install hack, remove before publishing!! -# In fact, it would be nice if we had some lazy handling code for this that just requires the user to provide a "--agree-with-license" once. ENV TS3CLIENT_VERSION 3.0.18.2 -ADD http://dl.4players.de/ts/releases/${TS3CLIENT_VERSION}/TeamSpeak3-Client-linux_amd64-${TS3CLIENT_VERSION}.run /home/app/ts3client.run -WORKDIR /home/app -RUN chmod +x ./ts3client.run &&\ - sed -i 's/^MS_PrintLicense$/#MS_PrintLicense/g' ./ts3client.run &&\ - ./ts3client.run --quiet --target ts3client &&\ - rm ./ts3client.run -USER root - -# install the ts3bot-control app properly ENV TS3BOT_COMMIT 6695fbd83ee07677e6ef920d7687de6a24011d90 -ADD https://github.com/icedream/ts3bot-control/archive/${TS3BOT_COMMIT}.tar.gz /home/app/ts3bot-control.tgz -WORKDIR /home/app -RUN tar xvf ts3bot-control.tgz &&\ - rm ts3bot-control.tgz &&\ - mv ts3bot-control* ts3bot -WORKDIR /home/app/ts3bot -RUN npm install -# install youtube-dl -ADD https://yt-dl.org/latest/youtube-dl /usr/local/bin/youtube-dl -RUN chmod a+rx /usr/local/bin/youtube-dl +ADD setup.sh / +RUN sh /setup.sh -# initialize other configuration for daemons +# Copy over configuration for other daemons COPY etc/ /etc -# clean up apt -RUN apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -VOLUME [ "/home/app/ts3client" ] - +# Startup configuration WORKDIR /home/app ENTRYPOINT [ "/sbin/my_init" ] diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..acb1902 --- /dev/null +++ b/setup.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +set -ex + +# For non-interactive install (dpkg) +export INITRD=no +export DEBIAN_FRONTEND=noninteractive + +# Get rid of some preinstalled services we don't need +rm -r /etc/service/cron /etc/service/nginx /etc/service/nginx-log-forwarder + +# Set up APT sources +rm /etc/apt/sources.list.d/* +add-apt-repository ppa:mc3man/trusty-media -y +curl -sL https://deb.nodesource.com/setup_4.x | bash - + +# Now install all packages we need +apt-get install -y --no-install-recommends \ + nodejs \ + blackbox xvfb xdotool \ + pulseaudio pulseaudio-utils \ + dbus \ + python python-minimal python-pkg-resources rtmpdump ffmpeg \ + vlc vlc-plugin-pulse + +# DBus initialization +mkdir -p /var/run/dbus +chown messagebus:messagebus /var/run/dbus +dbus-uuidgen --ensure + +# Configure GUI user, we are going to use the pre-setup "app" user for this +mkdir -p /config +/sbin/setuser app ln -sf /config ~app/.ts3bot + +# Install TeamSpeak3. +# Original comment that used to be here: temporary non-interactive teamspeak3 install hack, remove before publishing!! +# In fact, it would be nice if we had some lazy handling code for this that just requires the user to provide a "--agree-with-license" once. +cd ~app +/sbin/setuser app wget http://dl.4players.de/ts/releases/${TS3CLIENT_VERSION}/TeamSpeak3-Client-linux_amd64-${TS3CLIENT_VERSION}.run -Ots3client.run +chmod +x ./ts3client.run +sed -i 's/^MS_PrintLicense$/#MS_PrintLicense/g' ./ts3client.run +/sbin/setuser app ./ts3client.run --quiet --target ts3client +rm ./ts3client.run + +# Install TS3Bot +wget https://github.com/icedream/ts3bot-control/archive/${TS3BOT_COMMIT}.tar.gz -Ots3bot-control.tgz +/sbin/setuser app tar xvf ts3bot-control.tgz +rm ts3bot-control.tgz +mv ts3bot-control* ts3bot +(cd ts3bot && /sbin/setuser app npm install) + +# Install youtube-dl (actually done by npm already in a non-system-wide way) +#ADD https://yt-dl.org/latest/youtube-dl /usr/local/bin/youtube-dl +#RUN chmod a+rx /usr/local/bin/youtube-dl + +# Clean up APT +apt-get clean +rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*