diff --git a/packaging/Makefile.inc b/packaging/Makefile.inc index 1401b0793..f67406036 100644 --- a/packaging/Makefile.inc +++ b/packaging/Makefile.inc @@ -28,15 +28,6 @@ DEPLOY_USER ?= acs DEPLOY_HOST ?= villas.fein-aachen.org DEPLOY_PATH ?= /var/www/villas/node -DOCKER_FILE ?= Dockerfile -DOCKER_IMAGE ?= villas/node -DOCKER_TAG ?= $(GIT_BRANCH) - -deploy-docker-dev: DOCKER_IMAGE := $(DOCKER_IMAGE)-dev - -docker-dev: DOCKER_IMAGE := $(DOCKER_IMAGE)-dev -docker-dev: DOCKER_FILE := $(DOCKER_FILE).dev - packaging: rpm dist deploy: deploy-dist deploy-rpm deploy-docker @@ -54,22 +45,12 @@ deploy-rpm: rsync -a --progress $(RPMDIR)/RPMS/ $(DEPLOY_USER)@$(DEPLOY_HOST):$(DEPLOY_PATH)/../packages/ ssh $(DEPLOY_USER)@$(DEPLOY_HOST) createrepo $(DEPLOY_PATH)/../packages -deploy-docker deploy-docker-dev: - docker push $(DOCKER_IMAGE):$(DOCKER_TAG) - -# Docker targets -run-docker-dev: - docker run -it -p 80:80 -p 443:443 -p 1234:1234 -p 12000:12000/udp -p 12001:12001/udp --privileged --security-opt seccomp:unconfined -v "$(SRCDIR):/villas" $(DOCKER_IMAGE)-dev:$(GIT_BRANCH) - -docker docker-dev: - docker pull fedora:25 - docker build -f $(DOCKER_FILE) -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SRCDIR) - clean-packaging: rm -f $(BUILDDIR)/packaging/villas-node-$(VERSION_NUM).tar.gz install-packaging: -.PHONY: packaging install-packaging clean-packaging deploy deploy-dist deploy-rpm dist docker docker-dev run-docker-dev $(TAR_VILLAS) +.PHONY: packaging install-packaging clean-packaging deploy deploy-dist deploy-rpm dist $(TAR_VILLAS) include packaging/rpm/Makefile.inc +include packaging/docker/Makefile.inc diff --git a/Dockerfile b/packaging/docker/Dockerfile.app similarity index 71% rename from Dockerfile rename to packaging/docker/Dockerfile.app index 2cbe3fc64..a6c890a7e 100644 --- a/Dockerfile +++ b/packaging/docker/Dockerfile.app @@ -24,8 +24,19 @@ # along with this program. If not, see . ################################################################################### -FROM fedora:latest -MAINTAINER Steffen Vogel +FROM registry.fedoraproject.org/fedora:27 + +LABEL \ + org.label-schema.schema-version = "1.0" \ + org.label-schema.name = "VILLASnode" \ + org.label-schema.license = "GPL-3.0" \ + 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 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" # 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/Dockerfile.dev b/packaging/docker/Dockerfile.dev similarity index 76% rename from Dockerfile.dev rename to packaging/docker/Dockerfile.dev index ee724e86c..107cf2d5c 100644 --- a/Dockerfile.dev +++ b/packaging/docker/Dockerfile.dev @@ -28,8 +28,19 @@ # along with this program. If not, see . ################################################################################### -FROM fedora:25 -MAINTAINER Steffen Vogel +FROM registry.fedoraproject.org/fedora:27 + +LABEL \ + org.label-schema.schema-version="1.0" \ + org.label-schema.name="VILLASnode" \ + org.label-schema.license="GPL-3.0" \ + 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" # Toolchain RUN dnf -y install \ diff --git a/Dockerfile.dev-centos b/packaging/docker/Dockerfile.dev-centos similarity index 80% rename from Dockerfile.dev-centos rename to packaging/docker/Dockerfile.dev-centos index 2ffec6ffe..7a9d8d2b7 100644 --- a/Dockerfile.dev-centos +++ b/packaging/docker/Dockerfile.dev-centos @@ -29,7 +29,18 @@ ################################################################################### FROM centos:7 -MAINTAINER Steffen Vogel + +LABEL \ + org.label-schema.schema-version = "1.0" \ + org.label-schema.name = "VILLASnode" \ + org.label-schema.license = "GPL-3.0" \ + 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.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" # 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/Dockerfile.dev-ubuntu b/packaging/docker/Dockerfile.dev-ubuntu similarity index 79% rename from Dockerfile.dev-ubuntu rename to packaging/docker/Dockerfile.dev-ubuntu index 42c4a19c4..a6180a90b 100644 --- a/Dockerfile.dev-ubuntu +++ b/packaging/docker/Dockerfile.dev-ubuntu @@ -32,7 +32,17 @@ FROM ubuntu:xenial #FROM debian:jessie -MAINTAINER Steffen Vogel +LABEL \ + org.label-schema.schema-version = "1.0" \ + org.label-schema.name = "VILLASnode" \ + org.label-schema.license = "GPL-3.0" \ + 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.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" # Toolchain RUN apt-get update && apt-get install -y \ diff --git a/packaging/docker/Makefile.inc b/packaging/docker/Makefile.inc new file mode 100644 index 000000000..031ea1ff1 --- /dev/null +++ b/packaging/docker/Makefile.inc @@ -0,0 +1,66 @@ +# Makefile. +# +# @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 . +################################################################################### + +DOCKER = docker + +DOCKER_FILE ?= Dockerfile +DOCKER_IMAGE ?= villas/node +DOCKER_TAG ?= $(GIT_BRANCH) + +DOCKER_TARGETS = docker-app docker-dev docker-dev-centos docker-dev-ubuntu +DOCKER_RUN_TARGETS = $(addprefix run-,$(DOCKER_TARGETS)) +DOCKER_DEPLOY_TARGETS = $(addprefix deploy-,$(DOCKER_TARGETS)) + +DOCKER_RUN_OPTS = --interactive --tty \ + --port 80:80 --port 443:443 --port 12000:12000/udp --port 12001:12001/udp \ + --privileged --security-opt seccomp:unconfined --volume "$(SRCDIR):/villas" + +# Special cases for 'docker'target +run-docker: run-docker-app +deploy-docker: deploy-docker-app +docker: docker-app + $(DOCKER) tag $(DOCKER_IMAGE)-app:$(DOCKER_TAG) $(DOCKER_IMAGE):$(DOCKER_TAG) + +.PHONY: docker run-docker deploy-docker + +$(DOCKER_DEPLOY_TARGETS): deploy-docker-%: docker-% + $(DOCKER) push $(DOCKER_IMAGE)-%*:$(DOCKER_TAG) + +$(DOCKER_RUN_TARGETS): run-docker-%: docker-% + $(DOCKER) run $(DOCKER_RUN_OPTS) $(DOCKER_IMAGE)-$*:$(DOCKER_TAG) + +$(DOCKER_TARGETS): docker-%: $(BUILDDIR)/packaging/docker/Image.% + +# The docker build targets use the --iidfile option to write the newly build image +# id to an file. Make is using the modification timestamp of this file and the Dockerfile +# to determine when the image needs to be rebuild. +$(BUILDDIR)/packaging/docker/Image.%: packaging/docker/Dockerfile.% | $(BUILDDIR)/packaging/docker/ + $(DOCKER) build --pull \ + --file $< --iidfile $@ \ + --tag $(DOCKER_IMAGE)-$*:$(DOCKER_TAG) \ + --label org.label-schema.vcs-ref="$(GIT_REV)" \ + --label org.label-schema.vcs-branch="$(GIT_BRANCH)" \ + --label org.label-schema.version="$(VERSION)" \ + --label org.label-schema.variant="$(VARIANT)" \ + $(SRCDIR) + +.PHONY: $(DOCKER_TARGETS) $(DOCKER_RUN_TARGETS) $(DOCKER_DEPLOY_TARGETS)