1
+ PROMPT_COLOR =\033[36m
2
+ PROMPT_NC =\033[0m # No Color
3
+
4
+ MS_IMAGE_REGISTRY = public.ecr.aws/e3b4k2v5/otterside
5
+ MS_CART_SERVICE_NAME = cart
6
+ MS_USERS_SERVICE_NAME = users
7
+ MS_FRONTEND_SERVICE_NAME = frontend
8
+ MS_PRODUCTS_SERVICE_NAME = products
9
+ MS_CHECKOUT_SERVICE_NAME = checkout
10
+ MS_NEWSLETTER_SERVICE_NAME = newsletter
11
+
12
+ HELM_CHART_PATH = ./helm
13
+ KUBECONFIG_PATH = $(HOME ) /.kube/config
14
+ OTTERSIDE_NAMESPACE = otterside
15
+
16
+ # Include .env file if it exists
17
+ ifneq (,$(wildcard ./.env) )
18
+ include .env
19
+ export
20
+ endif
21
+
22
+ help : # # Show help message
23
+ @awk ' BEGIN {FS = ":.*##"; printf "\nUsage:\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " ${PROMPT_COLOR}%-25s${PROMPT_NC} %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST )
24
+
25
+ # Image building targets
26
+
27
+ build-users : # # Builds and pushes the users service image
28
+ @echo " ${PROMPT_COLOR} Building users image'...${PROMPT_NC} "
29
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_USERS_SERVICE_NAME ) -amd64 --push --file build/$(MS_USERS_SERVICE_NAME ) .Dockerfile .
30
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_USERS_SERVICE_NAME ) -arm64 --push --file build/$(MS_USERS_SERVICE_NAME ) .Dockerfile .
31
+
32
+ build-cart : # # Builds and pushes the cart service image
33
+ @echo " ${PROMPT_COLOR} Building cart image'...${PROMPT_NC} "
34
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_CART_SERVICE_NAME ) -amd64 --push --file build/$(MS_CART_SERVICE_NAME ) .Dockerfile .
35
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_CART_SERVICE_NAME ) -arm64 --push --file build/$(MS_CART_SERVICE_NAME ) .Dockerfile .
36
+
37
+ build-checkout : # # Builds and pushes the checkout service image
38
+ @echo " ${PROMPT_COLOR} Building checkout image'...${PROMPT_NC} "
39
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_CHECKOUT_SERVICE_NAME ) -amd64 --push --file build/$(MS_CHECKOUT_SERVICE_NAME ) .Dockerfile .
40
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_CHECKOUT_SERVICE_NAME ) -arm64 --push --file build/$(MS_CHECKOUT_SERVICE_NAME ) .Dockerfile .
41
+
42
+ build-frontend : # # Builds and pushes the frontend service image
43
+ @echo " ${PROMPT_COLOR} Building frontend image'...${PROMPT_NC} "
44
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_FRONTEND_SERVICE_NAME ) -amd64 --push --file build/$(MS_FRONTEND_SERVICE_NAME ) .Dockerfile .
45
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_FRONTEND_SERVICE_NAME ) -arm64 --push --file build/$(MS_FRONTEND_SERVICE_NAME ) .Dockerfile .
46
+
47
+ build-newsletter : # # Builds and pushes the newsletter service image
48
+ @echo " ${PROMPT_COLOR} Building newsletter image'...${PROMPT_NC} "
49
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_NEWSLETTER_SERVICE_NAME ) -amd64 --push --file build/$(MS_NEWSLETTER_SERVICE_NAME ) .Dockerfile .
50
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_NEWSLETTER_SERVICE_NAME ) -arm64 --push --file build/$(MS_NEWSLETTER_SERVICE_NAME ) .Dockerfile .
51
+
52
+ build-products : # # Builds and pushes the products service image
53
+ @echo " ${PROMPT_COLOR} Building products image'...${PROMPT_NC} "
54
+ docker buildx build --platform linux/amd64 -t $(MS_IMAGE_REGISTRY ) :$(MS_PRODUCTS_SERVICE_NAME ) -amd64 --push --file build/$(MS_PRODUCTS_SERVICE_NAME ) .Dockerfile .
55
+ docker buildx build --platform linux/arm64 -t $(MS_IMAGE_REGISTRY ) :$(MS_PRODUCTS_SERVICE_NAME ) -arm64 --push --file build/$(MS_PRODUCTS_SERVICE_NAME ) .Dockerfile .
56
+
57
+ build-images : build-users build-cart build-checkout build-frontend build-newsletter build-products # # Build and push all images
58
+
59
+ # Combine arch images
60
+
61
+ tag-users : # # Tag the users service images
62
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_USERS_SERVICE_NAME ) \
63
+ $(MS_IMAGE_REGISTRY ) :$(MS_USERS_SERVICE_NAME ) -amd64 \
64
+ $(MS_IMAGE_REGISTRY ) :$(MS_USERS_SERVICE_NAME ) -arm64
65
+
66
+ tag-cart : # # Tag the cart service images
67
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_CART_SERVICE_NAME ) \
68
+ $(MS_IMAGE_REGISTRY ) :$(MS_CART_SERVICE_NAME ) -amd64 \
69
+ $(MS_IMAGE_REGISTRY ) :$(MS_CART_SERVICE_NAME ) -arm64
70
+
71
+ tag-checkout : # # Tag the checkout service images
72
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_CHECKOUT_SERVICE_NAME ) \
73
+ $(MS_IMAGE_REGISTRY ) :$(MS_CHECKOUT_SERVICE_NAME ) -amd64 \
74
+ $(MS_IMAGE_REGISTRY ) :$(MS_CHECKOUT_SERVICE_NAME ) -arm64
75
+
76
+ tag-frontend : # # Tag the frontend service images
77
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_FRONTEND_SERVICE_NAME ) \
78
+ $(MS_IMAGE_REGISTRY ) :$(MS_FRONTEND_SERVICE_NAME ) -amd64 \
79
+ $(MS_IMAGE_REGISTRY ) :$(MS_FRONTEND_SERVICE_NAME ) -arm64
80
+
81
+ tag-newsletter : # # Tag the newsletter service images
82
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_NEWSLETTER_SERVICE_NAME ) \
83
+ $(MS_IMAGE_REGISTRY ) :$(MS_NEWSLETTER_SERVICE_NAME ) -amd64 \
84
+ $(MS_IMAGE_REGISTRY ) :$(MS_NEWSLETTER_SERVICE_NAME ) -arm64
85
+
86
+ tag-products : # # Tag the products service images
87
+ docker buildx imagetools create -t $(MS_IMAGE_REGISTRY ) :$(MS_PRODUCTS_SERVICE_NAME ) \
88
+ $(MS_IMAGE_REGISTRY ) :$(MS_PRODUCTS_SERVICE_NAME ) -amd64 \
89
+ $(MS_IMAGE_REGISTRY ) :$(MS_PRODUCTS_SERVICE_NAME ) -arm64
90
+
91
+ tag-images : tag-users tag-cart tag-checkout tag-frontend tag-newsletter tag-products # # Tag all images
92
+
93
+ update-images : build-images tag-images # # Build and tag all images
94
+
95
+ install-otterside : # # Installs Otterside in the kubernetes cluster
96
+ helm --kubeconfig=$(KUBECONFIG_PATH ) dep up $(HELM_CHART_PATH ) ; \
97
+ helm --kubeconfig=$(KUBECONFIG_PATH ) upgrade --install otterside $(HELM_CHART_PATH ) -n $(OTTERSIDE_NAMESPACE ) --create-namespace
0 commit comments