Her biri Docker görüntü etiketi olarak kullandığım adlandırılmış bir dizinde bulunan birden fazla Docker dosyası olan bir projem var. Her Dockerfile için bir docker görüntüsünü oluşturmalı, test etmeli ve itmeliyim. GNU Make ile aşağıdaki gibi bir şey yapmak için ne yapmam gerekiyor?makefile - çoklu hedeflere sahip mulitple dosyaları oluşturma
# 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))))
: o size benzeri verecek haliyle
. Eğer "foo/Dockerfile" var ve "docker build -t foo --force-rm foo" çalıştırırsam, "docker görüntüsü" bir dosya üretir mi? Ve eğer öyleyse, dosyanın adı nedir ve nerede bulunur? – Beta
Merhaba Beta, görüntüler (dosyalar) docker ana bilgisayarında ve kullanılan depolama sürücüsüne bağlı. http://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine – Tom
Genel olarak, dosyanın nereye gideceğini veya ne yapacağını bilmediğinizi mi kastediyorsunuz? olarak adlandırılabilir? Bu durumda * etkili * makefile kolaydır, ancak * verimli * bir değildir. – Beta