diff --git a/packaging/docker/Dockerfile.alpine b/packaging/docker/Dockerfile.alpine index 79210c286..0e78383b4 100644 --- a/packaging/docker/Dockerfile.alpine +++ b/packaging/docker/Dockerfile.alpine @@ -83,6 +83,7 @@ RUN echo -e "#!/bin/sh\n" | \ # https://github.com/creytiv/re/issues/256 # https://github.com/mz-automation/libiec61850/issues/279 ENV SKIP_CRITERION=1 +ENV SKIP_ETHERLAB=1 ENV SKIP_LIBRE=1 ENV PREFIX=/app @@ -132,6 +133,9 @@ RUN ldconfig /app/lib /app/lib64 ENV LD_LIBRARY_PATH=/app/lib:/app/lib64 ENV PATH=/app/bin:${PATH} +# Test if it runs +RUN villas node -h 2&>1 > /dev/null + LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="VILLASnode" \ diff --git a/packaging/docker/Dockerfile.centos b/packaging/docker/Dockerfile.centos index 2d79f8fc7..ecb1100a1 100644 --- a/packaging/docker/Dockerfile.centos +++ b/packaging/docker/Dockerfile.centos @@ -89,6 +89,19 @@ EXPOSE 443 WORKDIR /villas +FROM dev AS app + +COPY . /villas/ + +RUN rm -rf /villas/build && mkdir /villas/build +WORKDIR /villas/build +RUN cmake .. && \ + make -j$(nproc) doc && \ + make -j$(nproc) install && \ + ldconfig + +ENTRYPOINT ["villas"] + LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="VILLASnode" \ @@ -99,7 +112,7 @@ LABEL \ 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 CentOS" \ + 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/acs/public/villas/node" \ org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker" diff --git a/packaging/docker/Dockerfile.debian b/packaging/docker/Dockerfile.debian new file mode 100644 index 000000000..8bccba0ba --- /dev/null +++ b/packaging/docker/Dockerfile.debian @@ -0,0 +1,118 @@ +# 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 2014-2020, 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 debian:buster AS dev + +ARG GIT_REV=unknown +ARG GIT_BRANCH=unknown +ARG VERSION=unknown +ARG DISTRO=unknown + +ENV DEBIAN_FRONTEND=noninteractive + +# Toolchain +RUN apt-get update && \ + apt-get install -y \ + gcc g++ \ + pkg-config cmake make \ + autoconf automake autogen libtool \ + texinfo git mercurial curl tar wget diffutils \ + flex bison \ + protobuf-compiler protobuf-c-compiler + +# Dependencies +RUN apt-get update && \ + apt-get install -y \ + libssl-dev \ + libgraphviz-dev \ + libprotobuf-dev \ + libprotobuf-c-dev \ + uuid-dev \ + libconfig-dev \ + libnl-3-dev libnl-route-3-dev \ + libcurl4-openssl-dev \ + libjansson-dev \ + libzmq3-dev \ + libnanomsg-dev \ + librabbitmq-dev \ + libmosquitto-dev \ + libcomedi-dev \ + libibverbs-dev \ + librdmacm-dev \ + libusb-1.0-0-dev \ + libfmt-dev \ + libspdlog-dev + +# Add local and 64-bit locations to linker paths +ENV echo /usr/local/lib >> /etc/ld.so.conf && \ + echo /usr/local/lib64 >> /etc/ld.so.conf + +ENV DISTRO=debian +ENV ARCH=x86_64 +ENV TRIPLET=x86_64-linux-gnu + +# or install unpackaged dependencies from source +ADD packaging/deps.sh / +RUN bash deps.sh + +# Expose ports for HTTP and WebSocket frontend +EXPOSE 80 +EXPOSE 443 + +WORKDIR /villas + +FROM dev AS app + +COPY . /villas/ + +RUN rm -rf /villas/build && mkdir /villas/build +WORKDIR /villas/build +RUN cmake .. && \ + make -j$(nproc) doc && \ + make -j$(nproc) install && \ + ldconfig + +ENTRYPOINT ["villas"] + +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.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/acs/public/villas/node" \ + org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker" diff --git a/packaging/docker/Dockerfile.debian-multiarch b/packaging/docker/Dockerfile.debian-multiarch index c8ff30c95..5fd6cfae6 100644 --- a/packaging/docker/Dockerfile.debian-multiarch +++ b/packaging/docker/Dockerfile.debian-multiarch @@ -120,6 +120,19 @@ EXPOSE 443 WORKDIR /villas +FROM dev AS app + +COPY . /villas/ + +RUN rm -rf /villas/build && mkdir /villas/build +WORKDIR /villas/build +RUN cmake .. && \ + make -j$(nproc) doc && \ + make -j$(nproc) install && \ + ldconfig + +ENTRYPOINT ["villas"] + LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="VILLASnode" \ @@ -130,7 +143,7 @@ LABEL \ 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 Ubuntu" \ + 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/acs/public/villas/node" \ org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker" diff --git a/packaging/docker/Dockerfile.fedora b/packaging/docker/Dockerfile.fedora index e011cc1a1..739a2d9f0 100644 --- a/packaging/docker/Dockerfile.fedora +++ b/packaging/docker/Dockerfile.fedora @@ -107,7 +107,6 @@ EXPOSE 80 EXPOSE 443 WORKDIR /villas -ENTRYPOINT ["bash"] FROM dev AS app @@ -120,10 +119,6 @@ RUN cmake .. && \ make -j$(nproc) install && \ ldconfig -# For WebSocket / API access -EXPOSE 80 -EXPOSE 443 - ENTRYPOINT ["villas"] LABEL \ diff --git a/packaging/docker/Dockerfile.fedora-minimal b/packaging/docker/Dockerfile.fedora-minimal index 6257e05ed..2d6d5810c 100644 --- a/packaging/docker/Dockerfile.fedora-minimal +++ b/packaging/docker/Dockerfile.fedora-minimal @@ -27,7 +27,7 @@ RUN dnf -y install \ gcc gcc-c++ \ pkgconfig \ cmake make \ - git + git rpm-build # Dependencies RUN dnf -y install \ @@ -45,20 +45,35 @@ COPY . /villas/ RUN rm -rf /villas/build && mkdir /villas/build WORKDIR /villas/build -RUN cmake -DCPACK_GENERATOR=RPM -DWITH_NODE_ETHERCAT=OFF .. +RUN cmake -DCPACK_GENERATOR=RPM .. RUN make -j$(nproc) doc RUN make -j$(nproc) package FROM fedora:33 - -# Some of the dependencies are only available in our own repo -ADD https://packages.fein-aachen.org/fedora/fein.repo /etc/yum.repos.d/ COPY --from=builder /villas/build/*.rpm /tmp/ RUN dnf -y install /tmp/*.rpm +# Test if it runs +RUN villas node -h 2&>1 > /dev/null + # For WebSocket / API access EXPOSE 80 EXPOSE 443 ENTRYPOINT ["villas"] + +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.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/acs/public/villas/node" \ + org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker" diff --git a/packaging/docker/Dockerfile.ubuntu b/packaging/docker/Dockerfile.ubuntu index 2f8bd8ed3..b34bf1e29 100644 --- a/packaging/docker/Dockerfile.ubuntu +++ b/packaging/docker/Dockerfile.ubuntu @@ -67,7 +67,10 @@ RUN apt-get update && \ libcomedi-dev \ libibverbs-dev \ librdmacm-dev \ - libusb-1.0-0-dev + libusb-1.0-0-dev \ + libwebsockets-dev \ + libfmt-dev \ + libspdlog-dev # Add local and 64-bit locations to linker paths ENV echo /usr/local/lib >> /etc/ld.so.conf && \ @@ -85,11 +88,21 @@ RUN bash deps.sh EXPOSE 80 EXPOSE 443 -# Workaround for libnl3's search path for netem distributions -RUN ln -s /usr/lib64/tc /usr/lib/tc - WORKDIR /villas +FROM dev AS app + +COPY . /villas/ + +RUN rm -rf /villas/build && mkdir /villas/build +WORKDIR /villas/build +RUN cmake .. && \ + make -j$(nproc) doc && \ + make -j$(nproc) install && \ + ldconfig + +ENTRYPOINT ["villas"] + LABEL \ org.label-schema.schema-version="1.0" \ org.label-schema.name="VILLASnode" \ @@ -100,7 +113,7 @@ LABEL \ 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 Ubuntu" \ + 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/acs/public/villas/node" \ org.label-schema.usage="https://villas.fein-aachen.org/doc/node-installation.html#node-installation-docker"