mirror_frr/tests/topotests/Dockerfile
Donatas Abraitis 2484793bc5 tests: Fix docker build for topotests
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-11-26 11:26:55 +02:00

126 lines
3.9 KiB
Docker

FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
RUN apt update -y && apt upgrade -y && \
# Basic build requirements from documentation
apt-get install -y \
autoconf \
automake \
bison \
build-essential \
flex \
git \
install-info \
libc-ares-dev \
libcap-dev \
libelf-dev \
libjson-c-dev \
libpam0g-dev \
libreadline-dev \
libsnmp-dev \
libsqlite3-dev \
lsb-release \
libtool \
lcov \
make \
perl \
pkg-config \
python3-dev \
python3-sphinx \
screen \
texinfo \
tmux \
&& \
# Protobuf build requirements
apt-get install -y \
libprotobuf-c-dev \
protobuf-c-compiler \
&& \
# Libyang2 extra build requirements
apt-get install -y \
cmake \
libpcre2-dev \
&& \
# GRPC extra build requirements
apt-get install -y \
libgrpc-dev \
libgrpc++-dev \
protobuf-compiler-grpc \
&& \
# Runtime/triage/testing requirements
apt-get install -y \
rsync \
curl \
gdb \
kmod \
iproute2 \
iputils-ping \
liblua5.3-dev \
libssl-dev \
lua5.3 \
net-tools \
python3 \
python3-pip \
snmp \
snmp-mibs-downloader \
snmpd \
sudo \
time \
tshark \
valgrind \
yodl \
strace \
tcpdump \
&& \
download-mibs && \
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/iana/IANA-IPPM-METRICS-REGISTRY-MIB -O /usr/share/snmp/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB && \
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/SNMPv2-PDU -O /usr/share/snmp/mibs/ietf/SNMPv2-PDU && \
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/IPATM-IPMC-MIB -O /usr/share/snmp/mibs/ietf/IPATM-IPMC-MIB && \
python3 -m pip install wheel && \
python3 -m pip install 'protobuf<4' grpcio grpcio-tools && \
python3 -m pip install 'pytest>=6.2.4' 'pytest-xdist>=2.3.0' && \
python3 -m pip install 'scapy>=2.4.5' && \
python3 -m pip install xmltodict && \
python3 -m pip install git+https://github.com/Exa-Networks/exabgp@0659057837cd6c6351579e9f0fa47e9fb7de7311
# Install FRR built packages
RUN mkdir -p /etc/apt/keyrings && \
curl -s -o /etc/apt/keyrings/frrouting.gpg https://deb.frrouting.org/frr/keys.gpg && \
echo deb '[signed-by=/etc/apt/keyrings/frrouting.gpg]' https://deb.frrouting.org/frr \
$(lsb_release -s -c) "frr-stable" > /etc/apt/sources.list.d/frr.list && \
apt-get update && apt-get install -y librtr-dev libyang2-dev libyang2-tools
RUN apt install -y openvswitch-switch
RUN groupadd -r -g 92 frr \
&& groupadd -r -g 85 frrvty \
&& useradd -c "FRRouting suite" \
-d /var/run/frr \
-g frr \
-G frrvty \
-r \
-s /sbin/nologin \
frr \
&& useradd -d /var/run/exabgp/ \
-s /bin/false \
exabgp
# Configure coredumps
RUN echo "" >> /etc/security/limits.conf; \
echo "* soft core unlimited" >> /etc/security/limits.conf; \
echo "root soft core unlimited" >> /etc/security/limits.conf; \
echo "* hard core unlimited" >> /etc/security/limits.conf; \
echo "root hard core unlimited" >> /etc/security/limits.conf
# Copy run scripts to facilitate users wanting to run the tests
COPY docker/inner /opt/topotests
ENV PATH "$PATH:/opt/topotests"
RUN echo "cat /opt/topotests/motd.txt" >> /root/.profile && \
echo "export PS1='(topotests) $PS1'" >> /root/.profile
ENTRYPOINT [ "bash", "/opt/topotests/entrypoint.sh" ]