VOL-1449 Create docker images including pyvoltha

Creates a base and pyvoltha docker image with installed
using a newer version of pip.  Also include the README.md
file as pip install needed it inside the docker build.

Change-Id: I5450de4a855ed40f2eb611c55726dfcba720f41f
diff --git a/Makefile b/Makefile
index cb917b6..dfed663 100644
--- a/Makefile
+++ b/Makefile
@@ -13,27 +13,63 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+
+ifeq ($(TAG),)
+TAG := latest
+endif
+
+ifeq ($(TARGET_TAG),)
+TARGET_TAG := latest
+endif
+
+ifneq ($(http_proxy)$(https_proxy),)
+# Include proxies from the environment
+DOCKER_PROXY_ARGS = \
+       --build-arg http_proxy=$(http_proxy) \
+       --build-arg https_proxy=$(https_proxy) \
+       --build-arg ftp_proxy=$(ftp_proxy) \
+       --build-arg no_proxy=$(no_proxy) \
+       --build-arg HTTP_PROXY=$(HTTP_PROXY) \
+       --build-arg HTTPS_PROXY=$(HTTPS_PROXY) \
+       --build-arg FTP_PROXY=$(FTP_PROXY) \
+       --build-arg NO_PROXY=$(NO_PROXY)
+endif
+
+DOCKER_BUILD_ARGS = \
+        --build-arg TAG=$(TAG) \
+        --build-arg REGISTRY=$(REGISTRY) \
+        --build-arg REPOSITORY=$(REPOSITORY) \
+        $(DOCKER_PROXY_ARGS) $(DOCKER_CACHE_ARG) \
+         --rm --force-rm \
+        $(DOCKER_BUILD_EXTRA_ARGS)
+
+DOCKER_IMAGE_LIST = \
+	pyvoltha-base \
+        pyvoltha
+
 VENVDIR := venv-$(shell uname -s | tr '[:upper:]' '[:lower:]')
 
 VENV_BIN ?= virtualenv
 VENV_OPTS ?=
 
-.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8 protos venv rebuild-venv clean distclean build test
+.PHONY: $(DIRS) $(DIRS_CLEAN) $(DIRS_FLAKE8) flake8 protos venv rebuild-venv clean distclean build test docker_base_img docker_image
 
 # This should to be the first and default target in this Makefile
 help:
 	@echo "Usage: make [<target>]"
 	@echo "where available targets are:"
 	@echo
-	@echo "build        : Build the protos"
-	@echo "dist         : Build the protos and create the python package"
-	@echo "test         : Run all unit test"
-	@echo "clean        : Remove files created by the build and tests"
-	@echo "distclean    : Remove venv directory"
-	@echo "help         : Print this help"
-	@echo "protos       : Compile all grpc/protobuf files"
-	@echo "rebuild-venv : Rebuild local Python virtualenv from scratch"
-	@echo "venv         : Build local Python virtualenv if did not exist yet"
+	@echo "build                : Build the protos"
+	@echo "dist                 : Build the protos and create the python package"
+	@echo "docker_base_img      : Build a base docker image with a modern version of pip and requirements.txt installed"
+	@echo "docker_image         : Build a docker image with pyvoltha installed"
+	@echo "test                 : Run all unit test"
+	@echo "clean                : Remove files created by the build and tests"
+	@echo "distclean            : Remove venv directory"
+	@echo "help                 : Print this help"
+	@echo "protos               : Compile all grpc/protobuf files"
+	@echo "rebuild-venv         : Rebuild local Python virtualenv from scratch"
+	@echo "venv                 : Build local Python virtualenv if did not exist yet"
 	@echo
 
 ## New directories can be added here
@@ -77,6 +113,12 @@
 	twine upload --repository-url https://test.pypi.org/legacy/ dist/*
 	twine upload dist/*
 
+docker_base_img:
+	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}pyvoltha-base:${TAG} -f docker/Dockerfile.base .
+
+docker_image: docker_base_img dist
+	docker build $(DOCKER_BUILD_ARGS) -t ${REGISTRY}${REPOSITORY}pyvoltha:${TAG} -f docker/Dockerfile.pyvoltha .
+
 install-protoc:
 	make -C pyvoltha/protos install-protoc