From 00902400585ad03f800652396b52f21bf54d5adc Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 17 Jun 2017 04:04:21 +0200 Subject: [PATCH] docker: add Dockerfile for Debian / Ubuntu based development environment --- Dockerfile.dev | 2 +- Dockerfile.dev-ubuntu | 100 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.dev-ubuntu diff --git a/Dockerfile.dev b/Dockerfile.dev index 34dc63f95..c881c236e 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -37,7 +37,7 @@ RUN dnf -y install \ pkgconfig make cmake \ autoconf automake autogen libtool \ flex bison \ - texinfo git + texinfo git curl tar # Several tools only needed for developement and testing RUN dnf -y install \ diff --git a/Dockerfile.dev-ubuntu b/Dockerfile.dev-ubuntu new file mode 100644 index 000000000..e0b77381c --- /dev/null +++ b/Dockerfile.dev-ubuntu @@ -0,0 +1,100 @@ +# 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 +# +# @author Steffen Vogel +# @copyright 2017, 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 . +################################################################################### + +# You can choose between Debian and Ubuntu here +FROM ubuntu:xenial +#FROM debian:jessie + +MAINTAINER Steffen Vogel + +# Toolchain +RUN apt-get update && apt-get install -y \ + gcc g++ \ + pkg-config make cmake \ + autoconf automake autogen libtool \ + flex bison \ + texinfo git curl tar + +# Several tools only needed for developement and testing +RUN apt-get update && apt-get install -y \ + doxygen dia graphviz \ + openssh-client \ + jq \ + iproute \ + python-pip \ + valgrind gdb \ + xmlto asciidoctor + +# 32bit versions of some standard libraries for RT-LAB code +RUN dpkg --add-architecture i386 +RUN apt-get update && apt-get install -y \ + libc6:i386 \ + libstdc++6:i386 \ + uuid-dev:i386 \ + libssl-dev:i386 + +# Tools for debugging, coverage, profiling +RUN pip install \ + gcovr + +# Some of the dependencies are only available in our own repo +ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ + +# Dependencies +RUN apt-get update && apt-get install -y \ + libssl-dev \ + libconfig-dev \ + libnl-3-dev libnl-route-3-dev \ + libcurl4-openssl-dev \ + libjansson-dev \ + libzmq3-dev \ + libnanomsg-dev + +# Build & Install Criterion +COPY thirdparty/criterion /tmp/criterion +RUN mkdir -p /tmp/criterion/build && cd /tmp/criterion/build && cmake .. && make install && rm -rf /tmp/* + +# Build & Install libxil +COPY thirdparty/libxil /tmp/libxil +RUN mkdir -p /tmp/libxil/build && cd /tmp/libxil/build && cmake .. && make install && rm -rf /tmp/* + +# Build & Install libxil +COPY thirdparty/libwebsockets /tmp/libwebsockets +RUN mkdir -p /tmp/libwebsockets/build && cd /tmp/libwebsockets/build && cmake -DLWS_IPV6=1 -DLWS_WITH_STATIC=0 -DLWS_WITHOUT_TESTAPPS=1 -DLWS_WITH_HTTP2=1 .. && make install && rm -rf /tmp/* + +# Expose ports for HTTP and WebSocket frontend +EXPOSE 80 +EXPOSE 443 + +ENV LD_LIBRARY_PATH /usr/local/lib:/usr/local/lib64 + +ENTRYPOINT villas +WORKDIR /villas +ENTRYPOINT bash