Dockerfile.dpsim-villas-dev 3.67 KB
Newer Older
Markus Mirz's avatar
Markus Mirz committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Dockerfile for VILLASnode development.
#
# This Dockerfile builds an image which contains all library dependencies
# and tools to build VILLASnode.
# However, VILLASnode itself it not part of the image.
#
# This image can be used for developing VILLASnode
# by running:
#   make docker-dev
#
# @author Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
# @copyright 2014-2019, Institute for Automation of Complex Power Systems, EONERC
# @license GNU General Public License (version 3)
#
# VILLASnode
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
###################################################################################

31
FROM rwthacs/dpsim-no-villas-dev:latest
Markus Mirz's avatar
Markus Mirz committed
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

ARG GIT_REV=unknown
ARG GIT_BRANCH=unknown
ARG VERSION=unknown
ARG VARIANT=unknown

# Some of the dependencies are only available in our own repo
ADD https://packages.fein-aachen.org/fedora/fein.repo /etc/yum.repos.d/

# Toolchain
RUN dnf -y install \
	gcc gcc-c++ \
	pkgconfig cmake make ninja-build \
	texinfo git curl tar \
	protobuf-compiler protobuf-c-compiler

# Several tools only needed for developement and testing
RUN dnf -y install \
	doxygen dia graphviz \
	openssh-clients \
	rpmdevtools rpm-build \
	jq nmap-ncat \
	iproute \
	python-pip \
	valgrind gdb gdb-gdbserver \
	xmlto dblatex rubygem-asciidoctor \
	psmisc procps-ng \
	rabbitmq-server mosquitto

# Tools for debugging, coverage, profiling
RUN pip install \
	gcovr \
	protobuf

# Dependencies
RUN dnf -y install \
	openssl-devel \
	protobuf-devel \
	protobuf-c-devel \
	libuuid-devel \
	libconfig-devel \
	libnl3-devel \
	libcurl-devel \
	jansson-devel \
	libwebsockets-devel \
	zeromq-devel \
	nanomsg \
	libiec61850 \
	librabbitmq-devel \
	mosquitto-devel \
	comedilib-devel \
	libibverbs-devel \
	librdmacm-devel \
	re-devel \
	uldaq-devel

# Build & Install Criterion
RUN cd /tmp && \
	git clone --recursive https://github.com/Snaipe/Criterion && \
	mkdir -p Criterion/build && cd Criterion/build && \
	cmake -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64 .. && make -j$(nproc) install && \
	rm -rf /tmp/*

# Workaround for libnl3's search path for netem distributions
RUN ln -s /usr/lib64/tc /usr/lib/tc

# Expose ports for HTTP and WebSocket frontend
EXPOSE 80
EXPOSE 443

ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64

WORKDIR /villas
ENTRYPOINT bash

LABEL \
	org.label-schema.schema-version="1.0" \
	org.label-schema.name="VILLASnode" \
	org.label-schema.license="GPL-3.0" \
	org.label-schema.vcs-ref="$GIT_REV" \
	org.label-schema.vcs-branch="$GIT_BRANCH" \
	org.label-schema.version="$VERSION" \
	org.label-schema.variant="$VARIANT" \
	org.label-schema.vendor="Institute for Automation of Complex Power Systems, RWTH Aachen University" \
	org.label-schema.author.name="Steffen Vogel" \
	org.label-schema.author.email="stvogel@eonerc.rwth-aachen.de" \
	org.label-schema.description="A image containing all build-time dependencies for VILLASnode based on Fedora" \
	org.label-schema.url="http://fein-aachen.org/projects/villas-framework/" \
	org.label-schema.vcs-url="https://git.rwth-aachen.de/VILLASframework/VILLASnode" \
	org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker"