forked from frappe/frappe_docker
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
111 lines (82 loc) · 2.9 KB
/
Copy pathMakefile
File metadata and controls
111 lines (82 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Copyright (c) Dirk Chang <dirk@kooiot.com>
# SPDX-License-Identifier: Apache-2.0
MF_DOCKER_IMAGE_NAME_PREFIX ?= kooiot
BUILD_BRANCH ?= master
PROJECT_NAME ?= thingsroot
SERVICES = thingsroot-node-api \
thingsroot-web \
thingsroot-services \
thingsroot-worker \
thingsroot-nginx
DOCKERS = $(addprefix docker_,$(SERVICES))
define make_docker
$(eval svc=$(subst docker_,,$(1)))
docker build \
--no-cache \
--build-arg GIT_BRANCH=$(BUILD_BRANCH) \
--tag=$(MF_DOCKER_IMAGE_NAME_PREFIX)/$(svc) \
-f build/$(svc)/Dockerfile .
endef
all: $(DOCKERS)
.PHONY: all $(SERVICES) dockers latest release
clean: cleandocker
clean_images:
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
clean_volumns:
docker volume ls -f dangling=true -q | xargs -r docker volume rm -f
clean_all_volumns: clean_all_containers
docker volume ls -q | xargs -r docker volume rm -f
clean_all_containers:
docker container ls -a -q | xargs -r docker container rm -f
cleandocker:
# Stop all containers (if running)
docker-compose --project-name $(PROJECT_NAME) -f docker-compose-thingsroot.yml stop
# Remove thingsroot containers
docker ps -f name=$(MF_DOCKER_IMAGE_NAME_PREFIX) -aq | xargs -r docker rm
# Remove exited containers
docker ps -f name=$(MF_DOCKER_IMAGE_NAME_PREFIX) -f status=dead -f status=exited -aq | xargs -r docker rm -v
# Remove unused images
docker images "$(MF_DOCKER_IMAGE_NAME_PREFIX)\/*" -f dangling=true -q | xargs -r docker rmi
# Remove old thingsroot images
docker images -q "$(MF_DOCKER_IMAGE_NAME_PREFIX)\/*" | xargs -r docker rmi
ifdef pv
# Remove unused volumes
docker volume ls -f name=$(MF_DOCKER_IMAGE_NAME_PREFIX) -f dangling=true -q | xargs -r docker volume rm
endif
test:
go test -mod=vendor -v -race -count 1 -tags test $(shell go list ./... | grep -v 'vendor\|cmd')
$(DOCKERS):
$(call make_docker,$(@))
dockers: $(DOCKERS)
define docker_push
for svc in $(SERVICES); do \
docker push $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(1); \
done
endef
changelog:
git log $(shell git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s"
latest: dockers
$(call docker_push,latest)
release:
$(eval version = $(shell git describe --abbrev=0 --tags))
git checkout $(version)
$(MAKE) dockers
for svc in $(SERVICES); do \
docker tag $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(version); \
done
$(call docker_push,$(version))
run:
docker-compose --project-name $(PROJECT_NAME) -f docker-compose-thingsroot.yml up
start:
docker-compose --project-name $(PROJECT_NAME) -f docker-compose-thingsroot.yml up -d
stop:
docker-compose --project-name $(PROJECT_NAME) -f docker-compose-thingsroot.yml stop
down:
docker-compose --project-name $(PROJECT_NAME) -f docker-compose-thingsroot.yml down
define docker_pull
for svc in $(SERVICES); do \
docker pull $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(1); \
done
endef
pull_latest:
$(call docker_pull,latest)