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

Chore: Makefile to replace run.sh

parent 7311f942
No related branches found
No related tags found
1 merge request!3Liquidsoap 2 migration
HDA
hda
occuring
fro
\ No newline at end of file
...@@ -5,7 +5,9 @@ LABEL maintainer="David Trattnig <david.trattnig@subsquare.at>" ...@@ -5,7 +5,9 @@ LABEL maintainer="David Trattnig <david.trattnig@subsquare.at>"
USER root USER root
# Dependencies & Utils # Dependencies & Utils
RUN apt update --allow-releaseinfo-change && apt -y install \ RUN apt update --allow-releaseinfo-change && \
apt -y --no-install-recommends install \
build-essential \
alsa-utils \ alsa-utils \
libssl-dev libssl-dev
...@@ -15,15 +17,16 @@ RUN mkdir -p /srv/tests ...@@ -15,15 +17,16 @@ RUN mkdir -p /srv/tests
RUN mkdir -p /srv/config RUN mkdir -p /srv/config
COPY src /srv/src COPY src /srv/src
COPY tests /srv/tests COPY tests /srv/tests
COPY run.sh /srv COPY Makefile /srv/Makefile
VOLUME ["/srv/socket", "/srv/logs", "/srv/audio/source", "/srv/audio/playlist", "/srv/audio/station"] COPY VERSION /srv/VERSION
VOLUME ["/srv/socket", "/srv/logs", "/srv/audio/source", "/srv/audio/playlist", "/srv/audio/fallback"]
#RUN chown -R liquidsoap:liquidsoap /srv #RUN chown -R liquidsoap:liquidsoap /srv
WORKDIR /srv WORKDIR /srv
# User liquodsoap has uid 10000 and gid 10001 # User Liquidsoap has UID 10000 and GID 10001
#USER liquidsoap #USER liquidsoap
# Start the Engine # Start the Engine
EXPOSE 1234/tcp EXPOSE 1234/tcp
ENTRYPOINT ["./run.sh", "prod"] ENTRYPOINT ["make"]
CMD ["core"] CMD ["run"]
\ No newline at end of file
Makefile 0 → 100644
APP_NAME := $(shell basename $(dir $(abspath $(dir $$PWD/Makefile))))
-include scripts/Makefile.*
.PHONY: help
help:
@echo "$(APP_NAME) targets:"
@echo " lint - verify code style"
@echo " spelling - check spelling of text"
@echo " test - run test suite"
@echo " log - tail log file"
@echo " syslog - tail syslog file"
@echo " run - start app"
@echo " run.debug - start app in debug mode"
@echo " docker.build - build docker image"
@echo " docker.push - push docker image"
@echo " docker.run - start app in container"
@echo " docker.restart - restart container"
@echo " docker.stop - stop container"
@echo " docker.rm - stop and remove container"
@echo " docker.log - container logs for app"
@echo " docker.bash - enter bash in container"
# Settings
CMD_LIQUIDSOAP := /usr/bin/liquidsoap
AURA_ENGINE_CORE_CONFIG := ${CURDIR}/config/engine-core.docker.ini
AURA_ENGINE_CORE_SOCKET := ${CURDIR}/socket
AURA_AUDIO_STORE := ${CURDIR}/audio
AURA_AUDIO_STORE_SOURCE := ${AURA_AUDIO_STORE}/source
AURA_AUDIO_STORE_FALLBACK := ${AURA_AUDIO_STORE}/fallback
AURA_AUDIO_STORE_PLAYLIST := ${AURA_AUDIO_STORE}/playlist
DOCKER_RUN = docker run \
--name $(APP_NAME) \
--network="host" \
--mount type=tmpfs,destination=/tmp \
--device /dev/snd \
--group-add audio \
-v "$(AURA_ENGINE_CORE_CONFIG)":"/srv/config/engine-core.ini":ro \
-v "$(AURA_ENGINE_CORE_SOCKET)":"/srv/socket" \
-v "$(AURA_AUDIO_STORE_SOURCE)":"/var/audio/source":ro \
-v "$(AURA_AUDIO_STORE_PLAYLIST)":"/var/audio/playlist":ro \
-v "$(AURA_AUDIO_STORE_FALLBACK)":"/var/audio/fallback":ro \
-u $(UID):$(GID) \
$(DOCKER_ENTRY_POINT) \
autoradio/$(APP_NAME)
# Targets
.PHONY: lint
lint:
$(CMD_LIQUIDSOAP) --check src/engine.liq
.PHONY: spelling
spelling: SPELLING_PATHS := $(wildcard *.md) docs src tests config contrib
spelling: SPELLING_PATHS_SKIP := src/archive
spelling: SPELLING_EXCLUDE_FILE := .codespell-whitelist
spelling:
codespell --ignore-words "$(SPELLING_EXCLUDE_FILE)" --skip "$(SPELLING_PATHS_SKIP)" $(SPELLING_PATHS)
.PHONY: test
test:
(cd tests && $(CMD_LIQUIDSOAP) engine_test_suite.liq)
.PHONY: log
log:
tail -f logs/$(APP_NAME).log
.PHONY: run
run:
(cd src && $(CMD_LIQUIDSOAP) ./engine.liq)
.PHONY: run.debug
run.debug:
(cd src && $(CMD_LIQUIDSOAP) --verbose --debug ./engine.liq)
.PHONY: docker.build
docker.build:
docker build -t autoradio/$(APP_NAME) .
.PHONY: docker.push
docker/push:
docker push autoradio/$(APP_NAME)
.PHONY: docker.run
docker.run: DOCKER_ENTRY_POINT := -d
docker.run:
$(DOCKER_RUN)
.PHONY: docker.restart
docker.restart:
docker restart $(APP_NAME)
.PHONY: docker.stop
docker.stop:
docker stop $(APP_NAME)
.PHONY: docker.rm
docker.rm: docker.stop
docker rm $(APP_NAME)
.PHONY: docker.log
docker.log:
docker logs $(APP_NAME) -f
.PHONY: docker.bash
docker.bash: DOCKER_ENTRY_POINT := -v "$(CURDIR)":"/srv" --entrypoint bash -it
docker.bash:
$(DOCKER_RUN)
#!/bin/bash
mode="dev"
docker="false"
#
# Run Script for AURA Engine
#
# Call with one of these parameters:
#
# - dev
# - prod
# - debug
# - log
# - docker:dev
# - docker:debug
# - docker:build
# - docker:push
#
if [[ $* =~ ^(dev|prod|debug|log)$ ]]; then
mode=$1
fi
if [[ "$1" == *"docker:"* ]]; then
docker="true"
mode=${1#*:}
fi
echo "[ Run mode=$mode ]"
echo "[ Docker=$docker ]"
LQS_CMD=liquidsoap
# +++ DEFAULT COMMANDS +++ #
if [[ $docker == "false" ]]; then
### Runs Engine Core in Development (Liquidsoap) ###
if [[ $mode == "dev" ]]; then
(cd src && $LQS_CMD ./engine.liq)
fi
### Runs Engine Core in Production (Liquidsoap) ###
if [[ $mode == "prod" ]]; then
(cd src && $LQS_CMD ./engine.liq)
fi
### Runs Engine Core (Verbose & debug output) ###
if [[ $mode == "debug" ]]; then
(cd src && $LQS_CMD --verbose --debug ./engine.liq)
fi
### Tails the log file only (Used for Docker debugging) ###
if [[ $mode == "log" ]]; then
tail -f logs/engine-core.log
fi
fi
# +++ DOCKER COMMANDS +++ #
if [[ $docker == "true" ]]; then
BASE_DIR=$(readlink -f .)
AUDIO_DIR=$(readlink -f ./audio)
echo "Absolute base dir: " $BASE_DIR
echo "Absolute audio dir: " $AUDIO_DIR
### Runs Engine Core ###
if [[ $mode == "dev" ]]; then
exec sudo docker run \
--network="host" \
--name aura-engine-core \
--rm \
-u $UID:$GID \
-v "$BASE_DIR/config/engine-core.docker.ini":"/srv/config/engine-core.ini":ro \
-v "$BASE_DIR/socket":"/srv/socket" \
-v "$AUDIO_DIR/source":"/var/audio/source":ro \
-v "$AUDIO_DIR/playlist":"/var/audio/playlist":ro \
-v "$AUDIO_DIR/station":"/var/audio/station":ro \
-v "$BASE_DIR/logs":"/srv/logs" \
-v "/etc/asound.conf":"/etc/asound.conf" \
--mount type=tmpfs,destination=/tmp \
--device /dev/snd \
--group-add audio \
autoradio/engine-core
fi
### Debugging mode: only tails the log file and enter the container manually ###
if [[ $mode == "debug" ]]; then
exec sudo docker run \
--network="host" \
--name aura-engine-core \
--rm \
-u $UID:$GID \
-v "$BASE_DIR/config/engine-core.docker.ini":"/srv/config/engine-core.ini":ro \
-v "$BASE_DIR/socket":"/srv/socket" \
-v "$AUDIO_DIR/source":"/var/audio/source":ro \
-v "$AUDIO_DIR/playlist":"/var/audio/playlist":ro \
-v "$AUDIO_DIR/station":"/var/audio/station":ro \
-v "$BASE_DIR/contrib":"/srv/contrib" \
-v "$BASE_DIR/tests":"/srv/tests" \
-v "$BASE_DIR/logs":"/srv/logs" \
-v "$BASE_DIR/contrib":"/srv/contrib" \
-v "$BASE_DIR/tests":"/srv/tests" \
-v "/etc/asound.conf":"/etc/asound.conf" \
--privileged \
--memory=8g --memory-reservation=4g \
--cpus=4.0 --cpu-shares=3000 \
--mount type=tmpfs,destination=/tmp \
--device /dev/snd \
--group-add audio \
autoradio/engine-core log
fi
### Create Docker Image from local project ###
if [[ $mode == "build" ]]; then
docker build -t autoradio/engine-core .
fi
### Pushes the latest Docker Image to Docker Hub ###
if [[ $mode == "push" ]]; then
docker push autoradio/engine-core
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