# syntax=docker/dockerfile:1 FROM ubuntu:22.04 LABEL Description="CORE Docker Ubuntu Image" ENV DEBIAN_FRONTEND=noninteractive ARG PROTOC_VERSION=3.19.6 ARG VENV_PATH=/opt/core/venv ENV PATH="$PATH:${VENV_PATH}/bin" WORKDIR /opt # install basic dependencies RUN apt-get update -y && \ apt-get install -y --no-install-recommends \ ca-certificates \ python3 \ python3-tk \ python3-pip \ python3-venv \ libpcap-dev \ libpcre3-dev \ libprotobuf-dev \ libxml2-dev \ protobuf-compiler \ unzip \ uuid-dev \ automake \ gawk \ git \ wget \ libreadline-dev \ libtool \ pkg-config \ g++ \ make \ iputils-ping \ tcpdump && \ apt-get autoremove -y # install core COPY core_*.deb . RUN apt-get install -y ./core_*.deb && \ rm -f core_*.deb # install ospf mdr RUN git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git && \ cd ospf-mdr && \ ./bootstrap.sh && \ ./configure --disable-doc --enable-user=root --enable-group=root \ --with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \ --localstatedir=/var/run/quagga && \ make -j$(nproc) && \ make install && \ cd /opt && \ rm -rf ospf-mdr # install emane RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \ mkdir protoc && \ unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d protoc && \ git clone https://github.com/adjacentlink/emane.git && \ cd emane && \ ./autogen.sh && \ ./configure --prefix=/usr && \ make -j$(nproc) && \ make install && \ cd src/python && \ make clean && \ PATH=/opt/protoc/bin:$PATH make && \ ${VENV_PATH}/bin/python -m pip install . && \ cd /opt && \ rm -rf protoc && \ rm -rf emane && \ rm -f protoc-${PROTOC_VERSION}-linux-x86_64.zip WORKDIR /root