From 5036df3f3b0f658822b10ccb92d5f093283c3fb2 Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Thu, 28 Jan 2021 13:03:38 +0100 Subject: [PATCH] Initial docker setup for engine. #72 --- Dockerfile | 31 ++++++++++++++--------------- config/sample-docker.engine.ini | 2 +- run.sh | 35 +++++++++++++++++++++++---------- src/client/client.py | 3 ++- 4 files changed, 43 insertions(+), 28 deletions(-) diff --git a/Dockerfile b/Dockerfile index a6d7e29a..aa543a31 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,34 @@ -FROM savonet/liquidsoap:v1.4.3 +FROM python:3.8-slim LABEL maintainer="David Trattnig <david.trattnig@subsquare.at>" -# Engine System Dependencies +# System Dependencies RUN apt-get update && apt-get -y install \ apt-utils \ - ffmpeg \ - quelcom \ build-essential \ - libmariadbclient-dev \ default-libmysqlclient-dev \ - python3.9-dev python3-pip - -# Print Debug Information - -RUN echo $(python3 -V) + libmariadbclient-dev # Setup Engine -RUN whoami RUN mkdir -p /srv -RUN mkdir -p /var/audio -RUN mkdir -p /var/audio/source -RUN mkdir -p /var/audio/station -RUN mkdir -p /var/audio/playlist -COPY . /srv +RUN mkdir -p /srv/src +RUN mkdir -p /srv/config + +COPY src /srv/src +COPY requirements.txt /srv +COPY meta.py /srv +COPY run.sh /srv +COPY run.py /srv + WORKDIR /srv + RUN pip3 install -r requirements.txt +VOLUME ["/srv/socket", "/srv/logs", "/var/audio/source", "/var/audio/playlist"] + # Start the Engine ENTRYPOINT ["./run.sh"] diff --git a/config/sample-docker.engine.ini b/config/sample-docker.engine.ini index efa0b88e..372a7a67 100644 --- a/config/sample-docker.engine.ini +++ b/config/sample-docker.engine.ini @@ -4,7 +4,7 @@ [general] # Path to the engine-core socket directory relative to the engine project root -socket_dir="../engine-core/socket" +socket_dir="/srv/socket" # Directory where the log file resides log_dir="logs" # Possible values: debug, info, warning, error, critical diff --git a/run.sh b/run.sh index 791a530a..2c177006 100755 --- a/run.sh +++ b/run.sh @@ -63,24 +63,39 @@ fi # +++ DOCKER COMMANDS +++ # if [[ $docker == "true" ]]; then - BASE_D=$(realpath "${BASH_SOURCE%/*}/") + BASE_DIR=$(readlink -f .) + echo "Absolute base dir: " $BASE_DIR ### Runs Engine Core & Liquidsoap ### if [[ $mode == "engine" ]]; then + + if [[ -z "${AURA_ENGINE_CONFIG_PATH}" ]]; then + AURA_ENGINE_CONFIG_PATH="$BASE_DIR/config/engine.docker.ini" + fi + + if [[ -z "${AURA_ENGINE_SOCKET_DIR}" ]]; then + AURA_ENGINE_SOCKET_DIR="$BASE_DIR/../engine-core/socket" + fi + + if [[ -z "${AURA_ENGINE_AUDIO_SOURCE_DIR}" ]]; then + AURA_ENGINE_AUDIO_SOURCE_DIR="$BASE_DIR/audio/source" + fi + + if [[ -z "${AURA_ENGINE_AUDIO_PLAYLIST_DIR}" ]]; then + AURA_ENGINE_AUDIO_PLAYLIST_DIR="$BASE_DIR/audio/playlist" + fi + exec sudo docker run \ --network="host" \ --name aura-engine \ - --rm -d \ + --rm \ -u $UID:$GID \ - -v "$BASE_D":/srv \ - -v "$BASE_D/audio/source":/var/audio/source:ro \ - -v "$BASE_D/audio/station":/var/audio/station:ro \ - -v "$BASE_D/audio/playlist":/var/audio/playlist:ro \ - -v "$BASE_D/config/docker":/etc/aura \ - -v "/dev/snd":/dev/snd \ - --privileged \ - --tmpfs /var/log/aura/ \ + -v "$AURA_ENGINE_CONFIG_PATH":"/srv/config/engine.ini":ro \ + -v "$AURA_ENGINE_SOCKET_DIR":"/srv/socket" \ + -v "$AURA_ENGINE_AUDIO_SOURCE_DIR":"/var/audio/source":ro \ + -v "$AURA_ENGINE_AUDIO_PLAYLIST_DIR":"/var/audio/playlist" \ + -v "$BASE_DIR/logs":"/srv/logs" \ autoradio/engine fi diff --git a/src/client/client.py b/src/client/client.py index d8ef758e..a7350e56 100644 --- a/src/client/client.py +++ b/src/client/client.py @@ -49,7 +49,8 @@ class LiquidSoapClient: @param socket_path: Der Pfad zum Socket des Liquidsoap-Scripts """ self.logger = logging.getLogger("AuraEngine") - self.socket_path = config.get("install_dir") + "/" + config.get("socket_dir") + "/" + socket_filename + socket_path = config.get("socket_dir") + "/" + socket_filename + self.socket_path = config.to_abs_path(socket_path) self.logger.debug("LiquidSoapClient using socketpath: " + self.socket_path) -- GitLab