複数のDockerfilesを持つプロジェクトがあります。各プロジェクトはDockerイメージタグとして使用する名前付きディレクトリにあります。 Dockerfileごとにドッカー画像を構築、テスト、プッシュする必要があります。 GNU Makeで次のようなことをするには、私は何をする必要がありますか?makefile - 複数のターゲットを持つ複数のファイルを構築する
# BUILDS needs to be a list of directories, not a list of Dockerfiles
BUILDS := $(wildcard */Dockerfile)
VERSION := $(shell git rev-parse --short=12 --verify HEAD)
DOCKER_REPO_URL := quay.io/reponame
define docker_build =
$(1):
@echo "Building [email protected]"
docker build -t [email protected] --force-rm [email protected]
endef
define docker_test =
$(1):
@echo "Testing [email protected]"
docker inspect [email protected]
docker run --rm [email protected] help
endef
define docker_push =
$(1):
@echo "Pushing [email protected]"
docker tag [email protected] $(DOCKER_REPO_URL):[email protected]$(VERSION)
docker push $(DOCKER_REPO_URL):[email protected]$(VERSION)
docker tag [email protected] $(DOCKER_REPO_URL):[email protected]
docker push $(DOCKER_REPO_URL):[email protected]
endef
.PHONY: all build test release clean
all: build test release
build: $(BUILDS)
$(foreach build,$(BUILDS),$(eval $(call docker_build,$(build))))
test: $(BUILDS)
$(foreach test,$(BUILDS),$(eval $(call docker_test,$(test))))
release:
$(foreach image,$(BUILDS),$(eval $(call docker_push,$(image))))
:それはあなたのようなを与える現状では
。私が 'foo/Dockerfile'を持っていて、' docker build -t foo --force-rm foo'を実行すると、ファイルを生成する "ドッカー画像"ですか?もしそうなら、ファイルの名前は何ですか?ファイルの名前はどこにありますか? – Beta
Hello Betaでは、画像(ファイル)はドッカーホスト上にあり、使用されるストレージドライバに依存します。 http://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine – Tom
一般的に、ファイルがどこに行くのか、それが何か呼び出される?その場合、*効果的な* makefileは簡単ですが、*効率的なものはありません。 – Beta