Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
33 views5 pages

Docker File

Uploaded by

idadetu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views5 pages

Docker File

Uploaded by

idadetu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

# This is a xenial base with python 3.

5 as well
# RD2C Base Docker file with GridLabD, NS, Helics configured
# Version 1.0
# Date: 11/21/2021
# Author: Sumit Purohit [email protected]
FROM python:3.6-slim AS builder
#FROM ubuntu:xenial

RUN apt-get update \


&& apt-get install --allow-unauthenticated -y \
wget \
git \
automake \
autoconf \
make \
g++ \
gcc \
libtool \
ca-certificates \
openssl \
libssl-dev \
python3 \
python3-pip \
sudo \
vim \
# helics \
libboost-dev \
libzmq5-dev \
m4 \
#&& sudo /usr/bin/update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc 1
\
#&& sudo /usr/bin/update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++ 1
\
#&& sudo sudo /usr/bin/update-alternatives --set gcc /usr/bin/gcc \
#&& sudo sudo /usr/bin/update-alternatives --set g++ /usr/bin/g++ \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/cache/apt/archives/*

# Build and install gcc 8


RUN cd /opt \
&& wget http://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-
8.4.0/gcc-8.4.0.tar.gz \
&& tar zxf gcc-8.4.0.tar.gz \
&& cd gcc-8.4.0 \
&& ./contrib/download_prerequisites \
&& apt -y install build-essential \
&& ./configure --disable-multilib \
&& make -j 4 \
&& make install \
&& cd \
&& rm -rf /opt/gcc-8.4.0 /opt/gcc-8.4.0.tar.gz \
&& sudo /usr/bin/update-alternatives --install /usr/bin/gcc gcc
/usr/local/bin/gcc 1 \
&& sudo /usr/bin/update-alternatives --install /usr/bin/g++ g++
/usr/local/bin/g++ 1 \
&& sudo sudo /usr/bin/update-alternatives --set gcc /usr/local/bin/gcc \
&& sudo sudo /usr/bin/update-alternatives --set g++ /usr/local/bin/g++

# Build and install cmake >= 10


RUN cd /opt \
&& wget --no-check-certificate
https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3.tar.gz \
&& tar zxf cmake-3.20.3.tar.gz \
&& cd cmake-3.20.3 \
&& ./bootstrap \
&& make \
&& make install \
&& cd \
&& rm -rf /opt/cmake-3.20.3 cmake-3-20.3.tar.gz

WORKDIR /rd2c

ENV RD2C=/rd2c
ENV GLD_INSTALL=${RD2C}
ENV GLPATH=/rd2c/share/gridlabd/:/rd2c/lib/gridlabd/
ENV CZMQ_VERSION 4.2.0
ENV ZMQ_VERSION 4.3.1
ENV TEMP_DIR=/tmp/source

ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${RD2C}/lib

ENV PYHELICS_INSTALL=/usr/local

# ----------------------------------------------------
# INSTALL ZMQ and BINDINGS for c++
# ----------------------------------------------------
RUN cd ${RD2C}

RUN cd ${RD2C} \
&& wget --no-check-certificate
http://github.com/zeromq/libzmq/releases/download/v${ZMQ_VERSION}/zeromq-$
{ZMQ_VERSION}.tar.gz \
&& tar -xzf zeromq-${ZMQ_VERSION}.tar.gz \
&& cd ${RD2C}/zeromq-${ZMQ_VERSION} \
&& ./configure --prefix=${RD2C} \
&& make \
&& make install

ENV CFLAGS=-I${RD2C}/include
ENV LDFLAGS=-L${RD2C}/lib
ENV PKG_CONFIG_PATH=${RD2C}/lib/pkgconfig

RUN cd ${RD2C} \
&& wget --no-check-certificate
https://github.com/zeromq/czmq/releases/download/v${CZMQ_VERSION}/czmq-$
{CZMQ_VERSION}.tar.gz \
&& tar -xzf czmq-${CZMQ_VERSION}.tar.gz \
&& cd ${RD2C}/czmq-${CZMQ_VERSION} \
&& ./configure --prefix=${RD2C} \
&& make \
&& make install

ENV CLFAGS=
ENV LDFLAGS=
ENV PKG_CONFIG_PATH=
# ----------------------------------------------------
# INSTALL Helics
# ----------------------------------------------------

RUN cd ${RD2C} \
&& git clone https://github.com/GMLC-TDC/HELICS -b v2.7.1 \
&& cd HELICS \
&& mkdir build \
&& cd build \
&& cmake -DHELICS_BUILD_CXX_SHARED_LIB=ON ../ \
&& make \
&& make install \
#&& cd /tmp \
#&& /bin/rm -r ${TEMP_DIR}/HELICS \
&& pip install helics-apps==2.7.1 \
&& pip3 install helics-apps==2.7.1
#&& pip install helics==3.0.0 \
#&& pip3 install helics==3.0.0 \
#&& cd ${RD2C}

# && pip install --trusted-host pypi.python.org --trusted-


host=files.pythonhosted.org --upgrade pip \
# && pip install --trusted-host=files.pythonhosted.org helics-apps==2.7.1 \
# && pip3 install --trusted-host=files.pythonhosted.org helics-apps==2.7.1 \
# && pip install --trusted-host=files.pythonhosted.org helics==2.7.1 \
# && pip3 install --trusted-host=files.pythonhosted.org helics==2.7.1

# ----------------------------------------------------
# INSTALL Gridlab-D
# ----------------------------------------------------

RUN cd ${RD2C} \
&& git clone https://github.com/gridlab-d/gridlab-d.git -b v4.3 --single-
branch \
&& cd ${RD2C}/gridlab-d/third_party \
&& tar -xzf xerces-c-3.2.0.tar.gz \
&& cd ${RD2C}/gridlab-d/third_party/xerces-c-3.2.0 \
&& ./configure \
&& make \
&& make install \
&& cd ${RD2C}/gridlab-d \
&& autoreconf -if \
&& ./configure --with-helics=/usr/local --prefix=$GLD_INSTALL --enable-silent-
rules 'CFLAGS=-g -O2 -w' 'CXXFLAGS=-g -O2 -w -std=c++14' 'LDFLAGS=-g -O2 -w' \
&& make \
&& make install

# ----------------------------------------------------
# INSTALL NS-3
# ----------------------------------------------------

RUN apt-get update && apt-get install -y libjsoncpp-dev

RUN apt-get update && apt-get install -y gcc


RUN apt-get install -y openmpi-bin openmpi-common libopenmpi-dev libgtk2.0-dev

ENV LDFLAGS="-ljsoncpp -L/usr/local/include/jsoncpp/"


RUN cd $RD2C \
&& mkdir PUSH \
&& cd PUSH \
&& git clone https://github.com/pnnl/NATIG.git \
&& cd NATIG \
&& ./build_ns3.sh "" ${RD2C}

RUN cd $RD2C \
&& git clone https://github.com/pnnl/NATIG.git \
&& cd NATIG \
&& cp -r integration $RD2C \
&& cp -r RC/code/run.sh ${RD2C}/integration/control \
&& cp -r RC/code/ns3-helics-grid-dnp3-4G-Docker.cc
${RD2C}/integration/control/ns3-helics-grid-dnp3-4G.cc \
&& cp -r RC/code/ns3-helics-grid-dnp3-5G-Docker.cc
${RD2C}/integration/control/ns3-helics-grid-dnp3-5G.cc \
&& cp -r RC/code/ns3-helics-grid-dnp3-Docker.cc
${RD2C}/integration/control/ns3-helics-grid-dnp3.cc \
&& cp -r RC/code/dnp3/wscript ${RD2C}/ns-3-dev/src/dnp3/ \
&& cp -r RC/code/applications/model/fncs-application.*
${RD2C}/ns-3-dev/src/applications/model/ \
&& cp -r RC/code/dnp3/model/dnp3-application.h ${RD2C}/ns-3-dev/src/dnp3/model/
\
&& cp -r RC/code/dnp3/model/dnp3-application-Docker.cc
${RD2C}/ns-3-dev/src/dnp3/model/dnp3-application.cc \
&& cp -r RC/code/helics-backup/model/dnp3-application-new.h
${RD2C}/ns-3-dev/contrib/helics/model/ \
&& cp -r RC/code/helics-backup/model/dnp3-application-new-Docker.cc ${RD2C}/ns-
3-dev/contrib/helics/model/dnp3-application-new.cc \
&& cp -r RC/code/helics-backup/model/dnp3-helics-application-Docker.cc $
{RD2C}/ns-3-dev/contrib/helics/model/dnp3-helics-application.cc \
&& cp -r RC/code/internet/* ${RD2C}/ns-3-dev/src/internet/ \
&& cp -r RC/code/lte/* ${RD2C}/ns-3-dev/src/lte/ \
&& cp -r RC/code/dnp3/model/dnp3-application-Docker.cc
${RD2C}/ns-3-dev/src/dnp3/model/dnp3-application.cc

RUN apt-get update && apt-get install -y procps


# ----------------------------------------------------
# INSTALL Java
# ----------------------------------------------------

RUN apt update \


&& mkdir -p /usr/share/man/man1 \
&& sudo apt-get install -y openjdk-11-jdk \
# && apt install -y openjdk-8-jdk-headless \
&& apt-get clean

# ----------------------------------------------------
# Set the JAVA_HOME variable
# ----------------------------------------------------

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64

# ----------------------------------------------------
# Copy model files
# ----------------------------------------------------

ADD input $RD2C/input


RUN mkdir $RD2C/output_gridlabd

ENV PATH=/rd2c/bin:/rd2c/lib:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/
sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/lib64

WORKDIR /rd2c
CMD sleep infinity

You might also like