2022-10-14 07:33:22 +01:00
|
|
|
# syntax=docker/dockerfile:1
|
|
|
|
FROM ubuntu:22.04
|
|
|
|
LABEL Description="CORE Docker Ubuntu Image"
|
|
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
2023-03-02 16:34:54 +00:00
|
|
|
ARG PROTOC_VERSION=3.19.6
|
|
|
|
ARG VENV_PATH=/opt/core/venv
|
|
|
|
ENV PATH="$PATH:${VENV_PATH}/bin"
|
|
|
|
WORKDIR /opt
|
2022-10-14 07:33:22 +01:00
|
|
|
|
|
|
|
# install basic dependencies
|
2023-03-02 16:34:54 +00:00
|
|
|
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
|
2022-10-14 07:33:22 +01:00
|
|
|
|
|
|
|
# install core
|
|
|
|
COPY core_*.deb .
|
2023-03-02 16:34:54 +00:00
|
|
|
RUN apt-get install -y ./core_*.deb && \
|
|
|
|
rm -f core_*.deb
|
2022-10-14 07:33:22 +01:00
|
|
|
|
|
|
|
# install ospf mdr
|
2023-03-02 16:34:54 +00:00
|
|
|
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
|
2022-10-14 07:33:22 +01:00
|
|
|
|
|
|
|
# install emane
|
2023-03-02 16:34:54 +00:00
|
|
|
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
2022-11-28 22:02:46 +00:00
|
|
|
mkdir protoc && \
|
2023-03-02 16:34:54 +00:00
|
|
|
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
|