Docker

In the Juturna repository you will find a Dockerfile that can be used to create a base Juturna image. To build it, symply navigate within the repo folder and run:

$ docker build -t juturna:latest .

The created image will include the core Juturna code, and all its plugins. You can find them in the /root/juturna folder.

Dev image

Should you require to build a Docker image for development purposes, you can do so by adding a few extra items in the Dockerfile. Whilst plugins do not require reinstalling Juturna to be updated, changing the code does. This can be automated with the following:

FROM python:3.12-slim

RUN mkdir -p /juturna_dev

COPY ./requirements.txt /juturna_dev

RUN pip install -r /juturna_dev/requirements.txt

RUN apt-get update -y && apt-get install -y --no-install-recommends \
    git jq libgl1 libglib2.0-0 libsm6 libxext6 ffmpeg \
    libinotifytools0 inotify-tools \
    gcc g++

RUN pip install --no-cache-dir --upgrade pip

COPY ./watcher.sh /usr/local/bin

WORKDIR /juturna_dev
#!/bin/bash

pip install --no-cache /juturna
echo "Starting file watcher..."

while inotifywait -r -e modify,create,delete /juturna /jutest/plugins \
                  --exclude '(__pycache__|\.pyc|\.git)'; do
    echo "Changes detected, reinstalling..."
    pip install --no-cache /juturna
    echo "Reinstall complete"
done
#!/bin/bash

docker stop juturna_dev
docker rm juturna_dev

docker build -t juturna_dev:latest .

docker run \
       -d \
       -vvv \
       --name juturna_dev \
       --network host \
       --volume $1:/juturna \
       juturna_dev:latest \
       /usr/local/bin/./watch.sh

sleep 3

docker exec -ti juturna_dev bash

Execute the run.sh script with:

$ ./run.sh <PATH_TO_JUTURNA>