Node

The Docker folder in the repo is a good starting point to create sandboxing environment. For an even simpler basic setup use this basic archlinux image

# Dockerfile for node container using only pacman for dependencies (no pip)
# Run with docker build -f basic-pacman.dockerfile -t basic-pacman:latest .

# Use the latest Arch Linux base image
FROM archlinux:latest

# Update system and install base-devel and git
RUN pacman -Sy \\
    && pacman-key --init \\
    && pacman-key --populate archlinux \\
    && pacman -S --noconfirm archlinux-keyring \\
    && pacman -Syu --needed --noconfirm base-devel git micro nano

# Install all Python dependencies via pacman only
# Based on dependencies from pyproject.toml files in src/node and src/ethoscope
RUN pacman -Sy --needed --noconfirm \\
    python \\
    python-bottle \\
    python-cherrypy \\
    python-mysql-connector \\
    python-netifaces \\
    python-gitpython \\
    python-zeroconf \\
    python-numpy \\
    python-opencv \\
    python-pyserial \\
    python-psutil \\
    python-requests \\
    python-scipy \\
    python-dateutil

# Add ethoscope repository to pacman.conf
RUN echo "" >> /etc/pacman.conf \\
    && echo "[ethoscope]" >> /etc/pacman.conf \\
    && echo "SigLevel = Optional TrustAll" >> /etc/pacman.conf \\
    && echo "Server = <https://repo.ethoscope.lab.gilest.ro/>" >> /etc/pacman.conf \\
    && pacman -Sy

# Install AUR packages
# Create a non-root user for building AUR packages (makepkg cannot run as root)
RUN useradd -m -G wheel -s /bin/bash sandbox && \\
    echo "sandbox ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# Install python-mattermostdriver from AUR
USER sandbox
WORKDIR /home/sandbox
RUN git clone <https://aur.archlinux.org/python-mattermostdriver.git> && \\
    cd python-mattermostdriver && \\
    makepkg -si --noconfirm

# Switch back to root
USER root

WORKDIR /root

# Run the node server
CMD ["/bin/bash"]

Build this with

docker build -f sandbox.dockerfile -t sandbox:latest .

You can then enter into this container with the following command which will also open port host:9000 and map it to container:80

docker run -it --publish 9000:80 --rm sandbox:latest /bin/bash

This will create an environment that can used to test the ethoscope package installation, for instance with

docker run -it --publish 9000:80 --rm sandbox:latest pacman -Sy ethoscope-node