-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
114 lines (90 loc) · 2.71 KB
/
Makefile
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
111
112
113
NAME := grafeas
PKG := github.com/controlplane/$(NAME)
REGISTRY := docker.io/controlplane
SHELL := /bin/bash
BUILD_DATE := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
CONTAINER_TAG ?= $(GIT_SHA)
CONTAINER_NAME := $(REGISTRY)/$(NAME):$(CONTAINER_TAG)
CONTAINER_NAME_LATEST := $(REGISTRY)/$(NAME):latest
NETWORK_NAME := "grafeas"
#POSTGRES_IMAGE := "postgres:10.3-alpine"
POSTGRES_IMAGE := "postgres:10.3-alpine"
SERVER_IMAGE := "grafeas-server"
ifeq ($(NODAEMON), true)
RUN_MODE :=
else
RUN_MODE := "-d"
endif
.PHONY: all
.SILENT:
all: help
.PHONY: build
build: ## builds a docker image
@echo "+ $@"
docker build ./database --tag grafeas-database:latest
docker build ./server --tag grafeas-server:latest
.PHONY: run-prod-network
run-prod-network: ## create bridge network shared b/w grafeas & postgres
@echo "+ $@"
docker network create ${NETWORK_NAME} || true
PASSWORD := 9Ptd5EQZFLoufuIby
SCRIPT_FILENAME := "init-grafeas-db.sh"
.PHONY: generate-db-init-script
generate-db-init-script:
@printf \
"#!/bin/bash\n\
set -e\n\n\
psql -v ON_ERROR_STOP=1 --username \"$$"POSTGRES_USER"\" <<-EOSQL\n\
CREATE USER grafeas WITH LOGIN PASSWORD '$(PASSWORD)';\n\
CREATE DATABASE grafeas;\n\
GRANT ALL PRIVILEGES ON DATABASE grafeas TO grafeas;\n\
EOSQL\n\
" > $(SCRIPT_FILENAME)
chmod a+x $(SCRIPT_FILENAME)
define pre-run
@echo "+ pre-run"
docker rm --force grafeas || true
docker rm --force postgres || true
endef
.PHONY: run
run: ## runs the last build docker image
@echo "+ $@"
@echo ${shell pwd}
$(pre-run)
$(run-postgres)
$(run-server)
define run-postgres
docker container run ${RUN_MODE} \
--restart always \
--name postgres \
--network ${NETWORK_NAME} \
-v "${shell pwd}/init-grafeas-db.sh":"/docker-entrypoint-initdb.d/init-grafeas-db.sh" \
-e GRAFEAS_PASSWORD=9Ptd5EQZFLoufuIby \
-e POSTGRES_PASSWORD=7b1pGaZAwknlblLp \
"${POSTGRES_IMAGE}"
endef
define run-server
docker container run ${RUN_MODE} \
--restart always \
--name grafeas \
-p 8080:8080 \
--network ${NETWORK_NAME} \
-e GRAFEAS_PASSWORD=9Ptd5EQZFLoufuIby \
"${SERVER_IMAGE}"
endef
.PHONY: push
push: ## runs the last build docker image
@echo "+ $@"
.PHONY: clean
clean:
@echo "+ $@"
docker rm --force grafeas-docker_server grafeas-docker_database || true
docker rmi --force grafeas-docker_server:latest grafeas-docker_database:latest || true
docker rm --force grafeas postgres || true
docker rmi --force "${SERVER_IMAGE}":latest "${POSTGRES_IMAGE}":latest || true
.PHONY: help
help: ## parse jobs and descriptions from this Makefile
@grep -E '^[ a-zA-Z0-9_-]+:([^=]|$$)' $(MAKEFILE_LIST) \
| grep -Ev '^help\b[[:space:]]*:' \
| sort \
| awk 'BEGIN {FS = ":.*?##"}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'