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