IMAGE_NAME:=organic-clippy # REMOTE_REPO:=harbor.fizz.buzz/private .PHONY: all all: build push .PHONY: build build: docker build -t $(IMAGE_NAME) -f Dockerfile . .PHONY: push push: ifdef REMOTE_REPO 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." endif .PHONY: clean clean: docker rmi $(IMAGE_NAME) ifdef REMOTE_REPO docker rmi $(REMOTE_REPO)/$(IMAGE_NAME) else @echo "REMOTE_REPO not defined, not removing from remote repo." endif docker volume rm rust-cache cargo-cache # NOTE: This target will write to folders underneath the git-root .PHONY: run run: build docker run --rm --init -t --read-only --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source:ro" --workdir=/source --mount source=cargo-cache,target=/usr/local/cargo/registry --mount source=rust-cache,target=/target --env CARGO_TARGET_DIR=/target $(IMAGE_NAME) .PHONY: shell shell: build docker run --rm -i -t --entrypoint /bin/sh --mount type=tmpfs,destination=/tmp -v "$$(readlink -f ../../):/source:ro" --workdir=/source --mount source=cargo-cache,target=/usr/local/cargo/registry --mount source=rust-cache,target=/target --env CARGO_TARGET_DIR=/target $(IMAGE_NAME)