diff --git a/docker/server/Makefile b/docker/server/Makefile index 0ee483a..3bac958 100644 --- a/docker/server/Makefile +++ b/docker/server/Makefile @@ -1,35 +1,51 @@ +SHELL := bash +.ONESHELL: +.SHELLFLAGS := -eu -o pipefail -c +.DELETE_ON_ERROR: +MAKEFLAGS += --warn-undefined-variables +MAKEFLAGS += --no-builtin-rules +OS:=$(shell uname -s) + +ifeq ($(origin .RECIPEPREFIX), undefined) + $(error This Make does not support .RECIPEPREFIX. Please use GNU Make 4.0 or later) +endif +.RECIPEPREFIX = > + IMAGE_NAME:=homepage # REMOTE_REPO:=harbor.fizz.buzz/private +TARGET := -.PHONY: all -all: build push +.PHONY: help +help: +> @grep -h "##" $(MAKEFILE_LIST) | grep -v grep | sed -E 's/^([^:]*): *## */\1: /' .PHONY: build -build: - docker build -t $(IMAGE_NAME) -f Dockerfile ../../ +build: ## Build the docker image. +> docker build --tag $(IMAGE_NAME) --target=$(TARGET) --file Dockerfile ../../ .PHONY: push -push: +push: ## Push the docker image to a remote repository. ifdef REMOTE_REPO - docker tag $(IMAGE_NAME) $(REMOTE_REPO)/$(IMAGE_NAME) - docker push $(REMOTE_REPO)/$(IMAGE_NAME) +> docker tag $(IMAGE_NAME) $(REMOTE_REPO)/$(IMAGE_NAME) +> docker push $(REMOTE_REPO)/$(IMAGE_NAME) else - @echo "REMOTE_REPO not defined, not pushing to a remote repo." +> @echo "REMOTE_REPO not defined, not pushing to a remote repo." endif .PHONY: clean clean: - docker rmi $(IMAGE_NAME) +> docker rmi $(IMAGE_NAME) ifdef REMOTE_REPO - docker rmi $(REMOTE_REPO)/$(IMAGE_NAME) +> docker rmi $(REMOTE_REPO)/$(IMAGE_NAME) else - @echo "REMOTE_REPO not defined, not removing from remote repo." +> @echo "REMOTE_REPO not defined, not removing from remote repo." endif .PHONY: run -run: - docker run --rm -i -t -p "8080:8080" $(IMAGE_NAME) +run: ## Launch the docker image +> docker run --rm -i -t -p "8080:8080" $(IMAGE_NAME) .PHONY: shell -shell: - docker run --rm -i -t -p "8080:8080" --entrypoint /bin/bash $(IMAGE_NAME) +shell: ## Launch an interactive shell inside the docker image. +shell: build +> docker run --rm -i -t -p "8080:8080" --entrypoint /bin/bash --mount type=tmpfs,destination=/tmp $(IMAGE_NAME)