# syntax=docker/dockerfile:1 FROM centos:7 LABEL Description="CORE CentOS Image" ENV LANG en_US.UTF-8 ARG PROTOC_VERSION=3.19.6 ARG VENV_PATH=/opt/core/venv ENV PATH="$PATH:${VENV_PATH}/bin" WORKDIR /opt # install basic dependencies RUN yum -y update && \ yum install -y \ git \ sudo \ wget \ tzdata \ unzip \ libpcap-devel \ libpcre3-devel \ libxml2-devel \ protobuf-devel \ unzip \ uuid-devel \ tcpdump \ automake \ gawk \ libreadline-devel \ libtool \ pkg-config \ make && \ yum-builddep -y python3 && \ yum autoremove -y # install python3.9 RUN wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz && \ tar xf Python-3.9.15.tgz && \ cd Python-3.9.15 && \ ./configure --enable-optimizations --with-ensurepip=install && \ make -j$(nproc) altinstall && \ python3.9 -m pip install --upgrade pip && \ cd /opt && \ rm -rf Python-3.9.15 # install core COPY core_*.rpm . RUN PYTHON=/usr/local/bin/python3.9 yum install -y ./core_*.rpm && \ rm -f core_*.rpm # 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 -q https://adjacentlink.com/downloads/emane/emane-1.3.3-release-1.el7.x86_64.tar.gz && \ tar xf emane-1.3.3-release-1.el7.x86_64.tar.gz && \ cd emane-1.3.3-release-1/rpms/el7/x86_64 && \ yum install -y epel-release && \ yum install -y ./openstatistic*.rpm ./emane*.rpm ./python3-emane_*.rpm && \ cd ../../../.. && \ rm emane-1.3.3-release-1.el7.x86_64.tar.gz && \ rm -rf emane-1.3.3-release-1 # install emane python bindings 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 && \ git checkout v1.3.3 && \ ./autogen.sh && \ PYTHON=${VENV_PATH}/bin/python ./configure --prefix=/usr && \ cd src/python && \ 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