xref: /unit/pkg/docker/Makefile (revision 1421:88c84fb7ac0f)
1#!/usr/bin/make
2
3include ../../version
4include ../shasum.mak
5
6DEFAULT_RELEASE := 1
7
8VERSION ?= $(NXT_VERSION)
9RELEASE ?= $(DEFAULT_RELEASE)
10CODENAME := buster
11
12UNIT_VERSION = $(VERSION)-$(RELEASE)~$(CODENAME)
13
14MODULES = python2.7 python3.7 php7.3 go1.11-dev perl5.28 ruby2.5 \
15          full minimal
16
17MODULE_php7.3="unit=$${UNIT_VERSION} unit-php=$${UNIT_VERSION}"
18
19MODULE_python2.7="unit=$${UNIT_VERSION} unit-python2.7=$${UNIT_VERSION}"
20
21MODULE_python3.7="unit=$${UNIT_VERSION} unit-python3.7=$${UNIT_VERSION}"
22
23MODULE_go1.11-dev="unit=$${UNIT_VERSION} unit-go=$${UNIT_VERSION} gcc"
24
25MODULE_perl5.28="unit=$${UNIT_VERSION} unit-perl=$${UNIT_VERSION}"
26
27MODULE_ruby2.5="unit=$${UNIT_VERSION} unit-ruby=$${UNIT_VERSION}"
28
29MODULE_full="unit=$${UNIT_VERSION} unit-php=$${UNIT_VERSION} unit-python2.7=$${UNIT_VERSION} unit-python3.7=$${UNIT_VERSION} unit-perl=$${UNIT_VERSION} unit-ruby=$${UNIT_VERSION}"
30
31MODULE_minimal="unit=$${UNIT_VERSION}"
32
33EXPORT_DIR := $(VERSION)
34
35default:
36	@echo "valid targets: all build dockerfiles push tag export clean"
37
38dockerfiles: $(addprefix Dockerfile., $(MODULES))
39build: $(addprefix build-,$(MODULES))
40tag: $(addprefix tag-,$(MODULES))
41push: $(addprefix push-,$(MODULES)) latest
42export: $(addsuffix .tar.gz,$(addprefix $(EXPORT_DIR)/nginx-unit-$(VERSION)-,$(MODULES))) $(addsuffix .tar.gz.sha512, $(addprefix $(EXPORT_DIR)/nginx-unit-$(VERSION)-,$(MODULES)))
43
44Dockerfile.%: ../../version
45	@echo "===> Building $@"
46	cat Dockerfile.tmpl | sed \
47			-e 's,@@UNITPACKAGES@@,$(MODULE_$*),g' \
48			-e 's,@@UNIT_VERSION@@,$(UNIT_VERSION),g' \
49			> $@
50
51build-%: Dockerfile.%
52	docker build -t unit:$(VERSION)-$* -f Dockerfile.$* .
53
54tag-%: build-%
55	docker tag unit:$(VERSION)-$* nginx/unit:$(VERSION)-$*
56
57push-%: tag-%
58	docker push nginx/unit:$(VERSION)-$*
59
60latest:
61	docker tag nginx/unit:$(VERSION)-full nginx/unit:latest
62	docker push nginx/unit:latest
63
64$(EXPORT_DIR):
65	mkdir -p $@
66
67$(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz: $(EXPORT_DIR) tag-%
68	docker save nginx/unit:$(VERSION)-$* | gzip > $@
69
70$(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz.sha512: $(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz
71	$(SHA512SUM) $< | sed 's,$(EXPORT_DIR)/,,' > $@
72
73all: $(addprefix Dockerfile., $(MODULES))
74
75clean:
76	rm -f $(addprefix Dockerfile., $(MODULES))
77	rm -rf $(EXPORT_DIR)
78
79.PHONY: default all build dockerfiles latest push tag export clean
80