From 8e312f9e5d12927cb64b9d46fd9b52df71eb5195 Mon Sep 17 00:00:00 2001 From: Carl Kittelberger Date: Thu, 18 May 2017 08:36:57 +0200 Subject: [PATCH] Attempt on optimizing Docker image. --- Dockerfile | 21 ++++++++++++++------- setup.sh | 39 ++++++++++++++++++++++----------------- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 62df88d..052641a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,14 @@ FROM node:7.10.0 -ARG TS3CLIENT_VERSION=3.0.19.4 +# Install runtime packages +RUN apt-get update &&\ + export INITRD=no &&\ + export DEBIAN_FRONTEND=noninteractive &&\ + apt-get install -y --no-install-recommends \ + ca-certificates \ + blackbox xvfb xdotool \ + pulseaudio pulseaudio-utils \ + vlc-nox '^libvlc[0-9]+$' vlc-plugin-pulse # Add "app" user RUN mkdir -p /tmp/empty &&\ @@ -8,13 +16,12 @@ RUN mkdir -p /tmp/empty &&\ useradd -d /home/app -l -N -g app -m -k /tmp/empty -u 9999 app &&\ rmdir /tmp/empty -ADD setup.sh / -COPY src/ /home/app/src/ -RUN sed -i 's,\r,,g' /setup.sh &&\ - sh /setup.sh +ARG TS3CLIENT_VERSION=3.0.19.4 -# Copy over configuration for other daemons -COPY etc/ /etc +COPY . /home/app/ts3bot/ +RUN cd ~app/ts3bot &&\ + sed -i 's,\r,,g' setup.sh &&\ + sh setup.sh # Startup configuration WORKDIR /home/app diff --git a/setup.sh b/setup.sh index 6f0de82..172e777 100644 --- a/setup.sh +++ b/setup.sh @@ -7,13 +7,16 @@ export INITRD=no export DEBIAN_FRONTEND=noninteractive # Now install all packages we need -apt-get update apt-get install -y --no-install-recommends \ ca-certificates \ blackbox xvfb xdotool \ pulseaudio pulseaudio-utils \ cmake python-minimal \ vlc-nox '^libvlc[0-9]+$' libvlc-dev vlc-plugin-pulse +apt-mark auto \ + cmake \ + python-minimal \ + libvlc-dev # Configure GUI user, we are going to use the pre-setup "app" user for this mkdir -p /config @@ -22,24 +25,26 @@ 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 -wget "http://teamspeak.gameserver.gamed.de/ts3/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 -./ts3client.run --quiet --target ts3client -rm ./ts3client.run +( + cd ~app + wget "http://teamspeak.gameserver.gamed.de/ts3/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 + ./ts3client.run --quiet --target ts3client + rm ./ts3client.run +) -# Install TS3Bot via Git -npm_config_wcjs_runtime="node" npm_config_wcjs_runtime_version="$(node --version | tr -d 'v')" \ - npm link --unsafe-perm ~app/src - -# Replace the shipped youtube-dl with the latest version (this is a hack that will hopefully be fixed soon!) -wget -O/usr/local/bin/youtube-dl "https://yt-dl.org/downloads/latest/youtube-dl" -rm -f "$(dirname "$(readlink -f "$(which ts3bot)")")/node_modules/youtube-dl/bin/youtube-dl" -ln -sf "/usr/local/bin/youtube-dl" "$(dirname "$(readlink -f "$(which ts3bot)")")/node_modules/youtube-dl/bin/youtube-dl" -chmod a+rx "/usr/local/bin/youtube-dl" +# Install TS3Bot +( + cd ~app/ts3bot + npm_config_wcjs_runtime="node" npm_config_wcjs_runtime_version="$(node --version | tr -d 'v')" \ + yarn global add --prod --check-files --verbose file:$(pwd) +) # Clean up APT -apt-get autoremove -y --purge wget cmake cmake-data +apt-get autoremove -y --purge apt-get clean rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Copy over configuration for daemons +cp -a etc/* /etc/