# Suitable for dockerfile based services .PHONY: clean clean-test clean-pyc clean-build docs help common.mk .DEFAULT_GOAL := help MAKE_PATH := $(dir $(realpath $(firstword $(MAKEFILE_LIST)))) NET_NAME := docker_net SERVICE := docker_image SERVER :=$(patsubst %,%_server,${SERVICE}) PORT_MAP := -p 8000:8000/tcp VALID_CMD := true include ./common.mk clean: clean-build clean-pyc clean-test clean-docker ## remove all build, test, coverage, Python and Docker artifacts clean-build: ## remove build artifacts rm -fr build/ rm -fr dist/ rm -fr .eggs/ find . -name '*.egg-info' -exec rm -fr {} + find . -name '*.egg' -exec rm -f {} + clean-pyc: ## remove Python file artifacts find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + find . -name '__pycache__' -exec rm -fr {} + clean-test: ## remove test and coverage artifacts rm -fr .tox/ rm -f .coverage rm -fr htmlcov/ rm -fr .pytest_cache clean-docker: teardown## removes docker images docker rm ${SERVER} || true # docker rmi ${SERVICE} || true depends: pip install grpcio_tools $(MAKE) build-sf-binaries build: clean ## builds the docker container # install the proto files in the right location docker build --build-arg AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \ --build-arg AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \ --build-arg AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} \ -t ${SERVICE} .. -f ${SERVER}.Dockerfile inspect: ## look inside the docker container docker run -i -t --rm --network=${NET_NAME} --entrypoint /bin/bash --name ${SERVER} ${PORT_MAP} ${SERVICE} logs: ## check docker container logs docker logs -f ${SERVER} .run: docker run -i -t --rm --network=${NET_NAME} --name ${SERVER} ${PORT_MAP} ${SERVICE} .setup: clean-docker build dockernet run: .setup .run ## runs the docker container in foreground teardown: docker stop ${SERVER} || true .deploy: docker run -d --network=${NET_NAME} --name ${SERVER} ${PORT_MAP} ${SERVICE} deploy: .setup .deploy ## daemonize the docker container .val: ## run the demo client $(VALID_CMD) || true .wait: sleep 60 .val-setup: true .val-teardown: true val: .val-setup .val .val-teardown validate: clean-docker deploy .wait .val-setup val .val-teardown ## validates response from the service end2end $(MAKE) teardown