mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 17:26:28 +00:00
alpine: Use docker build --iidfile
This was added in 17.06 and allows us to avoid using `$(BASE):build` which is not safe against parallel builds etc. Having done this restructure the build to not always delete the built container and to separate out the `hash` and `version` file rules so that they can be included in both the `tag` and `push` targets. Signed-off-by: Ian Campbell <ijc@docker.com>
This commit is contained in:
parent
53bd58edc8
commit
e015aff65a
@ -6,12 +6,14 @@ IMAGE=alpine
|
|||||||
DOCKER_CONTENT_VAR=1
|
DOCKER_CONTENT_VAR=1
|
||||||
PKG_DEPS=packages
|
PKG_DEPS=packages
|
||||||
|
|
||||||
ifeq ($(shell uname -m), x86_64)
|
ARCH := $(shell uname -m)
|
||||||
|
|
||||||
|
ifeq ($(ARCH), x86_64)
|
||||||
BASE=alpine:3.6
|
BASE=alpine:3.6
|
||||||
PKG_DEPS += packages.x86_64
|
PKG_DEPS += packages.x86_64
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(shell uname -m), aarch64)
|
ifeq ($(ARCH), aarch64)
|
||||||
BASE=arm64v8/alpine:3.6
|
BASE=arm64v8/alpine:3.6
|
||||||
PKG_DEPS += packages.aarch64
|
PKG_DEPS += packages.aarch64
|
||||||
DOCKER_CONTENT_VAR=0
|
DOCKER_CONTENT_VAR=0
|
||||||
@ -20,27 +22,29 @@ endif
|
|||||||
default: push
|
default: push
|
||||||
|
|
||||||
show-tag:
|
show-tag:
|
||||||
@sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions.$(shell uname -m)
|
@sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions.$(ARCH)
|
||||||
|
|
||||||
hash: Dockerfile Makefile $(PKG_DEPS)
|
iid: Dockerfile Makefile $(PKG_DEPS)
|
||||||
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(BASE)
|
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(BASE)
|
||||||
docker build --no-cache --build-arg BASE=$(BASE) -t $(IMAGE):build .
|
docker build --no-cache --build-arg BASE=$(BASE) --iidfile iid .
|
||||||
docker run --rm $(IMAGE):build sh -c 'echo Dockerfile /lib/apk/db/installed $$(find /mirror -name '*.apk' -type f) $$(find /go/bin -type f) | xargs cat | sha1sum' | sed 's/ .*//' > $@
|
|
||||||
|
|
||||||
push: hash
|
hash: Makefile iid
|
||||||
|
docker run --rm $(shell cat iid) sh -c 'echo Dockerfile /lib/apk/db/installed $$(find /mirror -name '*.apk' -type f) $$(find /go/bin -type f) | xargs cat | sha1sum' | sed 's/ .*//' > $@
|
||||||
|
|
||||||
|
versions.$(ARCH): Makefile hash iid
|
||||||
|
echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions.$(ARCH)
|
||||||
|
docker run --rm $(shell cat iid) find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions.$(ARCH)
|
||||||
|
|
||||||
|
push: hash iid versions.$(ARCH)
|
||||||
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
|
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
|
||||||
(docker tag $(IMAGE):build $(ORG)/$(IMAGE):$(shell cat hash) && \
|
(docker tag $(shell cat iid) $(ORG)/$(IMAGE):$(shell cat hash) && \
|
||||||
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker push $(ORG)/$(IMAGE):$(shell cat hash))
|
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker push $(ORG)/$(IMAGE):$(shell cat hash))
|
||||||
echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions.$(shell uname -m)
|
rm -f iid
|
||||||
docker run --rm $(IMAGE):build find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions.$(shell uname -m)
|
|
||||||
docker rmi $(IMAGE):build
|
|
||||||
rm -f hash
|
|
||||||
|
|
||||||
tag: hash
|
tag: hash iid versions.$(ARCH)
|
||||||
docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
|
docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
|
||||||
docker tag $(IMAGE):build $(ORG)/$(IMAGE):$(shell cat hash)
|
docker tag $(shell cat iid) $(ORG)/$(IMAGE):$(shell cat hash)
|
||||||
docker rmi $(IMAGE):build
|
rm -f iid
|
||||||
rm -f hash
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f hash
|
rm -f hash iid
|
||||||
|
Loading…
Reference in New Issue
Block a user