adding initial Dockerfile for convenience to run CORE within Docker, including GUI
This commit is contained in:
parent
bd896d1336
commit
35549401eb
1 changed files with 101 additions and 0 deletions
101
Dockerfile
Normal file
101
Dockerfile
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
FROM ubuntu:20.04
|
||||||
|
LABEL Description="CORE Docker Image"
|
||||||
|
|
||||||
|
# define variables
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG PREFIX=/usr/local
|
||||||
|
ARG BRANCH=develop
|
||||||
|
ARG CORE_TARBALL=core.tar.gz
|
||||||
|
ARG OSPF_TARBALL=ospf.tar.gz
|
||||||
|
|
||||||
|
# install system dependencies
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
automake \
|
||||||
|
bash \
|
||||||
|
ca-certificates \
|
||||||
|
ethtool \
|
||||||
|
gawk \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
iproute2 \
|
||||||
|
iputils-ping \
|
||||||
|
libc-dev \
|
||||||
|
libev-dev \
|
||||||
|
libreadline-dev \
|
||||||
|
libtool \
|
||||||
|
libtk-img \
|
||||||
|
make \
|
||||||
|
nftables \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
python3-tk \
|
||||||
|
pkg-config \
|
||||||
|
systemctl \
|
||||||
|
tk \
|
||||||
|
wget \
|
||||||
|
xauth \
|
||||||
|
xterm \
|
||||||
|
&& apt-get clean
|
||||||
|
# install python dependencies
|
||||||
|
RUN python3 -m pip install \
|
||||||
|
grpcio==1.27.2 \
|
||||||
|
grpcio-tools==1.27.2 \
|
||||||
|
poetry==1.1.7
|
||||||
|
# retrieve, build, and install core
|
||||||
|
RUN wget -q -O ${CORE_TARBALL} https://api.github.com/repos/coreemu/core/tarball/${BRANCH} && \
|
||||||
|
tar xf ${CORE_TARBALL} && \
|
||||||
|
cd coreemu-core* && \
|
||||||
|
./bootstrap.sh && \
|
||||||
|
./configure && \
|
||||||
|
make -j $(nproc) && \
|
||||||
|
make install && \
|
||||||
|
cd daemon && \
|
||||||
|
python3 -m poetry build -f wheel && \
|
||||||
|
python3 -m pip install dist/* && \
|
||||||
|
cp scripts/* ${PREFIX}/bin && \
|
||||||
|
mkdir /etc/core && \
|
||||||
|
cp -n data/core.conf /etc/core && \
|
||||||
|
cp -n data/logging.conf /etc/core && \
|
||||||
|
mkdir -p ${PREFIX}/share/core && \
|
||||||
|
cp -r examples ${PREFIX}/share/core && \
|
||||||
|
echo '\
|
||||||
|
[Unit]\n\
|
||||||
|
Description=Common Open Research Emulator Service\n\
|
||||||
|
After=network.target\n\
|
||||||
|
\n\
|
||||||
|
[Service]\n\
|
||||||
|
Type=simple\n\
|
||||||
|
ExecStart=/usr/local/bin/core-daemon\n\
|
||||||
|
TasksMax=infinity\n\
|
||||||
|
\n\
|
||||||
|
[Install]\n\
|
||||||
|
WantedBy=multi-user.target\
|
||||||
|
' > /lib/systemd/system/core-daemon.service && \
|
||||||
|
cd ../.. && \
|
||||||
|
rm ${CORE_TARBALL} && \
|
||||||
|
rm -rf coreemu-core*
|
||||||
|
# retrieve, build, and install ospf mdr
|
||||||
|
RUN wget -q -O ${OSPF_TARBALL} https://github.com/USNavalResearchLaboratory/ospf-mdr/tarball/master && \
|
||||||
|
tar xf ${OSPF_TARBALL} && \
|
||||||
|
cd USNavalResearchLaboratory-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 .. && \
|
||||||
|
rm ${OSPF_TARBALL} && \
|
||||||
|
rm -rf USNavalResearchLaboratory-ospf-mdr*
|
||||||
|
# retrieve and install emane packages
|
||||||
|
RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.2.7-release-1.ubuntu-20_04.amd64.tar.gz && \
|
||||||
|
tar xf emane*.tar.gz && \
|
||||||
|
cd emane-1.2.7-release-1/debs/ubuntu-20_04/amd64 && \
|
||||||
|
apt-get install -y ./emane*.deb ./python3-emane_*.deb && \
|
||||||
|
cd ../../../.. && \
|
||||||
|
rm emane-1.2.7-release-1.ubuntu-20_04.amd64.tar.gz && \
|
||||||
|
rm -rf emane-1.2.7-release-1
|
||||||
|
CMD ["systemctl", "start", "core-daemon"]
|
||||||
|
# sudo docker run -itd --name core -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw --privileged core
|
Loading…
Reference in a new issue