diff --git a/packaging/docker/CMakeLists.txt b/packaging/docker/CMakeLists.txt index 15d14e529..8ac13b4ff 100644 --- a/packaging/docker/CMakeLists.txt +++ b/packaging/docker/CMakeLists.txt @@ -40,12 +40,10 @@ foreach(SUFFIX app dev dev-centos dev-ubuntu) add_custom_target(deploy-docker-${SUFFIX} COMMAND docker push ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG} COMMAND docker push ${DOCKER_IMAGE}-${SUFFIX}:latest - DEPENDS docker-${SUFFIX} ) add_custom_target(run-docker-${SUFFIX} COMMAND docker run ${DOCKER_RUN_OPTS} ${DOCKER_IMAGE}-${SUFFIX}:${DOCKER_TAG} - DEPENDS docker-${SUFFIX} ) add_custom_target(docker-${SUFFIX} @@ -61,13 +59,19 @@ foreach(SUFFIX app dev dev-centos dev-ubuntu) --build-arg VARIANT=${VARIANT} ${DOCKER_BUILD_OPTS} ${CMAKE_SOURCE_DIR} ) + + add_dependencies(deploy-docker-${SUFFIX} docker-${SUFFIX}) + add_dependencies(run-docker-${SUFFIX} docker-${SUFFIX}) endforeach() # Special cases for 'docker'target -add_custom_target(docker DEPENDS docker-app +add_custom_target(run-docker + COMMAND docker run ${DOCKER_RUN_OPTS} ${DOCKER_IMAGE}:${DOCKER_TAG} node -h +) + +add_custom_target(docker COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:${DOCKER_TAG} COMMAND docker tag ${DOCKER_IMAGE}-app:${DOCKER_TAG} ${DOCKER_IMAGE}:latest - DEPENDS docker-dev ) add_custom_target(deploy-docker DEPENDS docker-app @@ -75,4 +79,6 @@ add_custom_target(deploy-docker DEPENDS docker-app COMMAND docker push ${DOCKER_IMAGE}:latest ) -add_custom_target(run-docker DEPENDS run-docker-app) +add_dependencies(docker docker-app) +add_dependencies(deploy-docker deploy-docker-app) +add_dependencies(run-docker docker) diff --git a/packaging/docker/Dockerfile.app b/packaging/docker/Dockerfile.app index 950c3a7cb..8128abb9c 100644 --- a/packaging/docker/Dockerfile.app +++ b/packaging/docker/Dockerfile.app @@ -1,11 +1,11 @@ -# Dockerfile for VILLASnode dependencies. +# Dockerfile # -# 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 running VILLASnode +# by running: +# make docker # # @author Steffen Vogel -# @copyright 2017, Institute for Automation of Complex Power Systems, EONERC +# @copyright 2017-2018, Institute for Automation of Complex Power Systems, EONERC # @license GNU General Public License (version 3) # # VILLASnode @@ -25,45 +25,29 @@ ################################################################################### ARG BUILDER_IMAGE=villas/node-dev +ARG DOCKER_TAG=latest +ARG GIT_REV=unknown +ARG GIT_BRANCH=unknown +ARG VERSION=unknown +ARG VARIANT=unknown # This image is built by villas-node-git/packaging/docker/Dockerfile.dev -FROM villas/node-dev:develop AS builder +FROM $BUILDER_IMAGE AS builder -COPY . /villas-node/ +COPY . /villas/ -RUN rm -rf /villas-node/build -WORKDIR /villas-node - -#RUN dnf -y install - -RUN make -j2 rpm-villas-node +RUN rm -rf /villas/build && mkdir /villas/build +WORKDIR /villas/build +RUN cmake -DCPACK_GENERATOR=RPM .. +RUN make -j$(nproc) doc +RUN make -j$(nproc) package FROM fedora:28 - -ARG GIT_REV=unkown -ARG GIT_BRANCH=unkown -ARG VERSION=unkown -ARG VARIANT=unkown # Some of the dependencies are only available in our own repo ADD https://packages.fein-aachen.org/redhat/fein.repo /etc/yum.repos.d/ -# Usually the following dependecies would be resolved by dnf -# when installing villas-node. -# We add them here to utilise Dockers caching and layer feature -# in order reduce bandwidth and space usage. -RUN dnf -y install \ - openssl \ - libconfig \ - libnl3 \ - libcurl \ - jansson \ - iproute \ - module-init-tools - -ADD https://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ - -COPY --from=builder /villas-node/build/Linux-x86_64-release/packaging/rpm/RPMS/x86_64/*.rpm /tmp/ +COPY --from=builder /villas/build/*.rpm /tmp/ RUN dnf -y install /tmp/*.rpm # For WebSocket / API access diff --git a/packaging/docker/Dockerfile.dev b/packaging/docker/Dockerfile.dev index 54af8157a..33045f21d 100644 --- a/packaging/docker/Dockerfile.dev +++ b/packaging/docker/Dockerfile.dev @@ -6,10 +6,10 @@ # # This image can be used for developing VILLASnode # by running: -# make docker +# make docker-dev # # @author Steffen Vogel -# @copyright 2017, Institute for Automation of Complex Power Systems, EONERC +# @copyright 2017-2018, Institute for Automation of Complex Power Systems, EONERC # @license GNU General Public License (version 3) # # VILLASnode @@ -30,10 +30,10 @@ FROM fedora:28 -ARG GIT_REV=unkown -ARG GIT_BRANCH=unkown -ARG VERSION=unkown -ARG VARIANT=unkown +ARG GIT_REV=unknown +ARG GIT_BRANCH=unknown +ARG VERSION=unknown +ARG VARIANT=unknown # Toolchain RUN dnf -y install \ diff --git a/packaging/docker/Dockerfile.dev-centos b/packaging/docker/Dockerfile.dev-centos index 575ba79c6..505aa27bf 100644 --- a/packaging/docker/Dockerfile.dev-centos +++ b/packaging/docker/Dockerfile.dev-centos @@ -30,10 +30,10 @@ FROM centos:7 -ARG GIT_REV=unkown -ARG GIT_BRANCH=unkown -ARG VERSION=unkown -ARG VARIANT=unkown +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://villas.fein-aachen.org/packages/villas.repo /etc/yum.repos.d/ diff --git a/packaging/docker/Dockerfile.dev-ubuntu b/packaging/docker/Dockerfile.dev-ubuntu index 32685b9d4..9541bf283 100644 --- a/packaging/docker/Dockerfile.dev-ubuntu +++ b/packaging/docker/Dockerfile.dev-ubuntu @@ -32,10 +32,10 @@ FROM ubuntu:xenial #FROM debian:jessie -ARG GIT_REV=unkown -ARG GIT_BRANCH=unkown -ARG VERSION=unkown -ARG VARIANT=unkown +ARG GIT_REV=unknown +ARG GIT_BRANCH=unknown +ARG VERSION=unknown +ARG VARIANT=unknown # Toolchain RUN apt-get update && apt-get install -y \