xref: /unit/pkg/docker/Makefile (revision 2056)
1508Sthresh@nginx.com#!/usr/bin/make
2508Sthresh@nginx.com
3953Salexander.borisov@nginx.cominclude ../../version
41410Sthresh@nginx.cominclude ../shasum.mak
5953Salexander.borisov@nginx.com
61764Sdefan@nginx.comDEFAULT_VERSION := $(NXT_VERSION)
7508Sthresh@nginx.com
81764Sdefan@nginx.comVERSION ?= $(DEFAULT_VERSION)
9508Sthresh@nginx.com
101410Sthresh@nginx.comEXPORT_DIR := $(VERSION)
111410Sthresh@nginx.com
121783Sthresh@videolan.orgMODULES ?= go jsc node perl php python ruby minimal
131783Sthresh@videolan.org
141783Sthresh@videolan.orgVERSION_minimal ?=
151957Sthresh@nginx.comCONTAINER_minimal ?= debian:bullseye-slim
161783Sthresh@videolan.orgCONFIGURE_minimal ?=
171783Sthresh@videolan.orgINSTALL_minimal ?=	version
181783Sthresh@videolan.orgdefine COPY_minimal
191783Sthresh@videolan.orgendef
201783Sthresh@videolan.org
211957Sthresh@nginx.comVERSION_go ?=		1.17
221783Sthresh@videolan.orgCONTAINER_go ?=		golang:$(VERSION_go)
231783Sthresh@videolan.orgCONFIGURE_go ?=		go --go-path=$$GOPATH
241783Sthresh@videolan.orgINSTALL_go ?=		go-install-src libunit-install
251783Sthresh@videolan.orgdefine COPY_go
26*2056Sthresh@nginx.comCOPY --from=BUILDER /usr/lib/\*-linux-gnu/libunit.a /tmp/\n\$
271783Sthresh@videolan.orgCOPY --from=BUILDER /usr/include/nxt_* /usr/include/\n\$
281783Sthresh@videolan.orgCOPY --from=BUILDER /go/src/ /go/src/
291783Sthresh@videolan.orgendef
301783Sthresh@videolan.org
311783Sthresh@videolan.orgVERSION_jsc ?=		11
321783Sthresh@videolan.orgCONTAINER_jsc ?=	openjdk:$(VERSION_jsc)-jdk
331783Sthresh@videolan.orgCONFIGURE_jsc ?=	java --jars=/usr/share/unit-jsc-common/
341783Sthresh@videolan.orgINSTALL_jsc ?=		java-shared-install java-install
351783Sthresh@videolan.orgCOPY_jsc =	 		COPY --from=BUILDER /usr/share/unit-jsc-common/ /usr/share/unit-jsc-common/
361783Sthresh@videolan.org
371957Sthresh@nginx.comVERSION_node ?=		16
381783Sthresh@videolan.orgCONTAINER_node ?=	node:$(VERSION_node)
391783Sthresh@videolan.orgCONFIGURE_node ?=	nodejs --node-gyp=/usr/local/lib/node_modules/npm/bin/node-gyp-bin/node-gyp
401783Sthresh@videolan.orgINSTALL_node ?=		node node-install libunit-install
411783Sthresh@videolan.orgdefine COPY_node
42*2056Sthresh@nginx.comCOPY --from=BUILDER /usr/lib/\*-linux-gnu/libunit.a /tmp/\n\$
431783Sthresh@videolan.orgCOPY --from=BUILDER /usr/include/nxt_* /usr/include/\n\$
441783Sthresh@videolan.orgCOPY --from=BUILDER /usr/local/lib/node_modules/unit-http/ /usr/local/lib/node_modules/unit-http/
451783Sthresh@videolan.orgendef
461783Sthresh@videolan.org
471957Sthresh@nginx.comVERSION_perl ?=		5.34
481783Sthresh@videolan.orgCONTAINER_perl ?=	perl:$(VERSION_perl)
491783Sthresh@videolan.orgCONFIGURE_perl ?=	perl
501783Sthresh@videolan.orgINSTALL_perl ?=		perl-install
511783Sthresh@videolan.orgCOPY_perl =
521783Sthresh@videolan.org
531783Sthresh@videolan.orgVERSION_php ?=		8.0
541783Sthresh@videolan.orgCONTAINER_php ?=	php:$(VERSION_php)-cli
551783Sthresh@videolan.orgCONFIGURE_php ?=	php
561783Sthresh@videolan.orgINSTALL_php ?=		php-install
571783Sthresh@videolan.orgCOPY_php =			RUN ldconfig
581783Sthresh@videolan.org
591783Sthresh@videolan.orgVERSION_python ?=	3.9
601783Sthresh@videolan.orgCONTAINER_python ?=	python:$(VERSION_python)
611783Sthresh@videolan.orgCONFIGURE_python ?=	python --config=/usr/local/bin/python3-config
621783Sthresh@videolan.orgINSTALL_python ?=	python3-install
631783Sthresh@videolan.orgCOPY_python =
641783Sthresh@videolan.org
651957Sthresh@nginx.comVERSION_ruby ?=		3.0
661783Sthresh@videolan.orgCONTAINER_ruby ?=	ruby:$(VERSION_ruby)
671783Sthresh@videolan.orgCONFIGURE_ruby ?=	ruby
681783Sthresh@videolan.orgINSTALL_ruby ?=		ruby-install
691783Sthresh@videolan.orgCOPY_ruby =			RUN gem install rack
701783Sthresh@videolan.org
71508Sthresh@nginx.comdefault:
721410Sthresh@nginx.com	@echo "valid targets: all build dockerfiles push tag export clean"
73508Sthresh@nginx.com
741783Sthresh@videolan.orgMODVERSIONS = $(foreach module,$(MODULES),$(module)$(VERSION_$(module)))
751783Sthresh@videolan.org
761783Sthresh@videolan.orgmodname = $(shell echo $1 | /usr/bin/tr -d '.01234567890-')
771783Sthresh@videolan.org
781783Sthresh@videolan.orgdockerfiles: $(addprefix Dockerfile., $(MODVERSIONS))
791783Sthresh@videolan.orgbuild: $(addprefix build-,$(MODVERSIONS))
801783Sthresh@videolan.orgtag: $(addprefix tag-,$(MODVERSIONS))
811783Sthresh@videolan.orgpush: $(addprefix push-,$(MODVERSIONS))
821783Sthresh@videolan.orgexport: $(addsuffix .tar.gz,$(addprefix $(EXPORT_DIR)/nginx-unit-$(VERSION)-,$(MODVERSIONS))) $(addsuffix .tar.gz.sha512, $(addprefix $(EXPORT_DIR)/nginx-unit-$(VERSION)-,$(MODVERSIONS)))
83508Sthresh@nginx.com
841135Svbart@nginx.comDockerfile.%: ../../version
85508Sthresh@nginx.com	@echo "===> Building $@"
861783Sthresh@videolan.org	cat template.Dockerfile | sed \
871783Sthresh@videolan.org			-e 's,@@VERSION@@,$(VERSION),g' \
881783Sthresh@videolan.org			-e 's,@@CONTAINER@@,$(CONTAINER_$(call modname, $*)),g' \
891783Sthresh@videolan.org			-e 's,@@CONFIGURE@@,$(CONFIGURE_$(call modname, $*)),g' \
901783Sthresh@videolan.org			-e 's,@@INSTALL@@,$(INSTALL_$(call modname, $*)),g' \
911783Sthresh@videolan.org			-e 's,@@COPY@@,$(COPY_$(call modname, $*)),g' \
92508Sthresh@nginx.com			> $@
93508Sthresh@nginx.com
94508Sthresh@nginx.combuild-%: Dockerfile.%
951783Sthresh@videolan.org	docker pull $(CONTAINER_$(call modname, $*))
961638Sthresh@nginx.com	docker build --no-cache -t unit:$(VERSION)-$* -f Dockerfile.$* .
97508Sthresh@nginx.com
981410Sthresh@nginx.comtag-%: build-%
99508Sthresh@nginx.com	docker tag unit:$(VERSION)-$* nginx/unit:$(VERSION)-$*
1001410Sthresh@nginx.com
1011410Sthresh@nginx.compush-%: tag-%
102508Sthresh@nginx.com	docker push nginx/unit:$(VERSION)-$*
103508Sthresh@nginx.com
1041410Sthresh@nginx.com$(EXPORT_DIR):
1051410Sthresh@nginx.com	mkdir -p $@
1061410Sthresh@nginx.com
1071410Sthresh@nginx.com$(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz: $(EXPORT_DIR) tag-%
1081410Sthresh@nginx.com	docker save nginx/unit:$(VERSION)-$* | gzip > $@
1091410Sthresh@nginx.com
1101410Sthresh@nginx.com$(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz.sha512: $(EXPORT_DIR)/nginx-unit-$(VERSION)-%.tar.gz
1111421Sthresh@nginx.com	$(SHA512SUM) $< | sed 's,$(EXPORT_DIR)/,,' > $@
1121410Sthresh@nginx.com
1131783Sthresh@videolan.orgall: $(addprefix Dockerfile., $(MODVERSIONS))
114508Sthresh@nginx.com
115508Sthresh@nginx.comclean:
1161783Sthresh@videolan.org	rm -f $(addprefix Dockerfile., $(MODVERSIONS))
1171410Sthresh@nginx.com	rm -rf $(EXPORT_DIR)
118508Sthresh@nginx.com
1191783Sthresh@videolan.org.PHONY: default build dockerfiles push tag export clean
120