Skip to content
Snippets Groups Projects
Commit 525d16b9 authored by David Trattnig's avatar David Trattnig
Browse files

Chore(Make): Migrate docker cmd from run.sh #112

parent 5f779151
No related branches found
No related tags found
No related merge requests found
FROM python:3.9-slim
LABEL maintainer="David Trattnig <david.trattnig@subsquare.at>"
# System Dependencies
......@@ -15,20 +14,18 @@ RUN mkdir -p /srv
RUN mkdir -p /srv/src
RUN mkdir -p /srv/config
RUN /usr/local/bin/python -m pip install --upgrade pip
COPY src /srv/src
COPY config/sample-docker.engine.ini /srv/config/engine.ini
COPY config/sample.engine.docker.ini /etc/aura/engine.ini
COPY requirements.txt /srv
COPY contrib/postgresql-requirements.txt /srv
COPY meta.py /srv
COPY run.sh /srv
COPY run.py /srv
COPY VERSION /srv
WORKDIR /srv
RUN pip3 install -r requirements.txt
RUN pip3 install -r postgresql-requirements.txt
VOLUME ["/srv/socket", "/srv/logs", "/var/audio/source", "/var/audio/playlist"]
# Start the Engine
ENTRYPOINT ["./run.sh", "prod"]
ENTRYPOINT ["make"]
CMD ["run"]
-include build/base.Makefile
-include build/docker.Makefile
.PHONY: help
help:
@echo "$(APP_NAME) targets:"
......@@ -17,9 +15,57 @@ help:
$(call docker_help)
# Settings
STEERING_BASE_URL := http://0.0.0.0:8000
ENGINE_API_BASE_URL := http://0.0.0.0:8008
TANK_BASE_URL := http://0.0.0.0:8040
ENGINE_TANK_SESSION := engine
ENGINE_TANK_SECRET := rather-secret
# ENGINE_DB_HOST := 172.17.0.1
ENGINE_DB_HOST := 0.0.0.0
ENGINE_DB_NAME := aura_engine
ENGINE_DB_USER := aura_engine
ENGINE_DB_PASS := 1234
AURA_ENGINE_CORE_SOCKET := "aura_engine_socket"
AURA_ENGINE_CONFIG := ${CURDIR}/config/engine.docker.ini
AURA_AUDIO_STORE_SOURCE := ${CURDIR}/../engine-core/audio/source
AURA_AUDIO_STORE_PLAYLIST := ${CURDIR}/../engine-core/audio/playlist
AURA_LOGS := ${CURDIR}/logs
TIMEZONE := "Europe/Vienna"
DOCKER_RUN = @docker run \
--name $(APP_NAME) \
--network="host" \
--mount type=tmpfs,destination=/tmp \
--device /dev/snd \
--group-add audio \
-e TZ=$(TIMEZONE) \
-e STEERING_BASE_URL=$(STEERING_BASE_URL) \
-e ENGINE_API_BASE_URL=$(ENGINE_API_BASE_URL) \
-e TANK_BASE_URL=$(TANK_BASE_URL) \
-e ENGINE_TANK_SESSION=$(ENGINE_TANK_SESSION) \
-e ENGINE_TANK_SECRET=$(ENGINE_TANK_SECRET) \
-e ENGINE_DB_HOST=$(ENGINE_DB_HOST) \
-e ENGINE_DB_NAME=$(ENGINE_DB_NAME) \
-e ENGINE_DB_USER=$(ENGINE_DB_USER) \
-e ENGINE_DB_PASS=$(ENGINE_DB_PASS) \
-v aura_engine_socket:"/srv/socket" \
-v "$(AURA_ENGINE_CONFIG)":"/etc/aura/engine.ini":ro \
-v "$(AURA_AUDIO_STORE_SOURCE)":"/var/audio/source":ro \
-v "$(AURA_AUDIO_STORE_PLAYLIST)":"/var/audio/playlist":ro \
-v "$(AURA_LOGS)":"/srv/logs" \
-u $(UID):$(GID) \
$(DOCKER_ENTRY_POINT) \
autoradio/$(APP_NAME)
# Targets
.PHONY: init.app
init.app:
sudo apt install -y \
apt install -y \
python3-wheel \
python3-flask \
python3-flask-sqlalchemy \
......@@ -30,7 +76,7 @@ init.app:
.PHONY: init.dev
init.dev:
sudo apt install -y
apt install -y
codespell \
black \
python3-flake8 \
......@@ -64,4 +110,4 @@ log:
.PHONY: run
run:
python3 run.py
python3 src/aura_engine/app.py
#!/bin/bash
mode="dev"
docker="false"
#
# Run Script for AURA Engine
#
# Call with one of these parameters:
#
# - dev
# - prod
# - test
# - recreate-database
# - docker:dev
# - docker:prod
# - docker:build
# - docker:push
#
if [[ $* =~ ^(dev|prod|test|recreate-database)$ ]]; then
mode=$1
fi
if [[ "$1" == *"docker:"* ]]; then
docker="true"
mode=${1#*:}
fi
echo "[ Run mode=$mode ]"
echo "[ Docker=$docker ]"
# Check for the correct Python version
PYTHON_EXEC="python3"
echo "[ Using $(python3 -V) ]"
# +++ DEFAULT COMMANDS +++ #
if [[ $docker == "false" ]]; then
### Runs Engine in development mode ###
if [[ $mode == "dev" ]]; then
echo "Running Engine (Development)"
python3 run.py
fi
### Runs Engine ###
if [[ $mode == "prod" ]]; then
/usr/bin/env $PYTHON_EXEC run.py
fi
### Runs Tests ###
if [[ $mode == "test" ]]; then
# source python/bin/activate
echo "Running Engine Tests"
python3 -m unittest discover tests
fi
### CAUTION: This deletes everything in your database ###
if [[ $mode == "recreate-database" ]]; then
/usr/bin/env $PYTHON_EXEC run.py --recreate-database
fi
fi
# +++ DOCKER COMMANDS +++ #
if [[ $docker == "true" ]]; then
BASE_DIR=$(readlink -f .)
echo "Absolute base dir: " $BASE_DIR
### Runs Engine Docker Container (Local build for development, if n/a pull from Docker Hub) ###
if [[ $mode == "dev" ]]; then
if [[ -z "${AURA_ENGINE_CONFIG_PATH}" ]]; then
AURA_ENGINE_CONFIG_PATH=$(readlink -f "${BASE_DIR}/config/docker.engine.ini")
fi
if [[ -z "${AURA_ENGINE_SOCKET_DIR}" ]]; then
AURA_ENGINE_SOCKET_DIR=$(readlink -f "${BASE_DIR}/../engine-core/socket")
fi
if [[ -z "${AURA_ENGINE_CONTROL_CHANNEL}" ]]; then
AURA_ENGINE_CONTROL_CHANNEL="127.0.0.1:1337"
fi
if [[ -z "${AURA_ENGINE_AUDIO_SOURCE_DIR}" ]]; then
AURA_ENGINE_AUDIO_SOURCE_DIR=$(readlink -f "${BASE_DIR}/audio/source")
fi
if [[ -z "${AURA_ENGINE_AUDIO_PLAYLIST_DIR}" ]]; then
AURA_ENGINE_AUDIO_PLAYLIST_DIR=$(readlink -f "${BASE_DIR}/audio/playlist")
fi
echo AURA_ENGINE_CONFIG_PATH="$AURA_ENGINE_CONFIG_PATH"
echo AURA_ENGINE_SOCKET_DIR="$AURA_ENGINE_SOCKET_DIR"
echo AURA_ENGINE_CONTROL_CHANNEL="$AURA_ENGINE_CONTROL_CHANNEL"
echo AURA_ENGINE_AUDIO_SOURCE_DIR="$AURA_ENGINE_AUDIO_SOURCE_DIR"
echo AURA_ENGINE_AUDIO_PLAYLIST_DIR="$AURA_ENGINE_AUDIO_PLAYLIST_DIR"
exec sudo docker run \
--network="host" \
--name aura-engine \
--rm \
-u $UID:$GID \
-p "$AURA_ENGINE_CONTROL_CHANNEL":1337/tcp \
-v "$AURA_ENGINE_CONFIG_PATH":"/srv/config/engine.ini" \
-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" \
-e TZ=Europe/Vienna \
autoradio/engine
fi
### Create Docker Image from local project ###
if [[ $mode == "build" ]]; then
exec sudo docker build -t autoradio/engine .
fi
### Pushes the latest Docker Image to Docker Hub ###
if [[ $mode == "push" ]]; then
exec sudo docker push autoradio/engine
fi
fi
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment