forked from AmoyLab/Unla
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
131 lines (113 loc) · 4.84 KB
/
Makefile
File metadata and controls
131 lines (113 loc) · 4.84 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Registry configurations
DOCKER_REGISTRY ?= docker.io
GHCR_REGISTRY ?= ghcr.io
ALI_REGISTRY ?= registry.cn-hangzhou.aliyuncs.com
IMAGE ?= ghcr.io/mcp-ecosystem/mcp-gateway/allinone:latest
APISERVER_IMAGE ?= ghcr.io/mcp-ecosystem/mcp-gateway/apiserver:latest
MCP_GATEWAY_IMAGE ?= ghcr.io/mcp-ecosystem/mcp-gateway/mcp-gateway:latest
MOCK_USER_SVC_IMAGE ?= ghcr.io/mcp-ecosystem/mcp-gateway/mock-user-svc:latest
WEB_IMAGE ?= ghcr.io/mcp-ecosystem/mcp-gateway/web:latest
# Project configurations
PROJECT_NAME ?= mcp-gateway
IMAGE_TAG ?= $(shell cat pkg/version/VERSION)
# Service configurations
SERVICES = mcp-gateway mock-user-svc web
# Build flags
LDFLAGS = -X main.version=$(VERSION)
# Registry targets
.PHONY: docker ghcr ali
# Build all services
.PHONY: build
build:
@for service in $(SERVICES); do \
docker build -t $(PROJECT_NAME)-$$service:$(IMAGE_TAG) \
-f deploy/docker/multi/$$service/Dockerfile .; \
docker tag $(PROJECT_NAME)-$$service:$(IMAGE_TAG) $(PROJECT_NAME)-$$service:latest; \
done
docker build -t $(PROJECT_NAME)-allinone:$(IMAGE_TAG) \
-f deploy/docker/allinone/Dockerfile .
docker tag $(PROJECT_NAME)-allinone:$(IMAGE_TAG) $(PROJECT_NAME)-allinone:latest
# Build multi-container version
.PHONY: build-multi
build-multi:
@for service in $(SERVICES); do \
docker build -t $(PROJECT_NAME)-$$service:$(IMAGE_TAG) \
-f deploy/docker/multi/$$service/Dockerfile .; \
docker tag $(PROJECT_NAME)-$$service:$(IMAGE_TAG) $(PROJECT_NAME)-$$service:latest; \
done
# Build all-in-one version
.PHONY: build-allinone
build-allinone:
docker build -t $(PROJECT_NAME)-allinone:$(IMAGE_TAG) \
-f deploy/docker/allinone/Dockerfile .
docker tag $(PROJECT_NAME)-allinone:$(IMAGE_TAG) $(PROJECT_NAME)-allinone:latest
# Run multi-container version
.PHONY: run-multi
run-multi:
MCP_GATEWAY_IMAGE=$(MCP_GATEWAY_IMAGE) \
MOCK_USER_SVC_IMAGE=$(MOCK_USER_SVC_IMAGE) \
WEB_IMAGE=$(WEB_IMAGE) \
docker-compose --env-file .env.multi --project-directory . -f deploy/docker/multi/docker-compose.yml up -d
# Stop multi-container version
.PHONY: stop-multi
stop-multi:
docker-compose --env-file .env.multi --project-directory . -f deploy/docker/multi/docker-compose.yml stop
# Down multi-container version
.PHONY: down-multi
down-multi:
docker-compose --env-file .env.multi --project-directory . -f deploy/docker/multi/docker-compose.yml down -v
# Run all-in-one version
.PHONY: run-allinone
run-allinone:
IMAGE=$(IMAGE) docker-compose --env-file .env.allinone --project-directory . -f deploy/docker/allinone/docker-compose.yml up -d
# Stop all-in-one version
.PHONY: stop-allinone
stop-allinone:
docker-compose --env-file .env.allinone --project-directory . -f deploy/docker/allinone/docker-compose.yml stop
# Down all-in-one version
.PHONY: down-allinone
down-allinone:
docker-compose --env-file .env.allinone --project-directory . -f deploy/docker/allinone/docker-compose.yml down -v
# Push to Docker Hub
docker: build
@for service in $(SERVICES); do \
docker tag $(PROJECT_NAME)-$$service:$(IMAGE_TAG) \
$(DOCKER_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
docker push $(DOCKER_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
done
docker tag $(PROJECT_NAME)-allinone:$(IMAGE_TAG) \
$(DOCKER_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
docker push $(DOCKER_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
# Push to GitHub Container Registry
ghcr: build
@for service in $(SERVICES); do \
docker tag $(PROJECT_NAME)-$$service:$(IMAGE_TAG) \
$(GHCR_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
docker push $(GHCR_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
done
docker tag $(PROJECT_NAME)-allinone:$(IMAGE_TAG) \
$(GHCR_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
docker push $(GHCR_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
# Push to Alibaba Cloud Container Registry
ali: build
@for service in $(SERVICES); do \
docker tag $(PROJECT_NAME)-$$service:$(IMAGE_TAG) \
$(ALI_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
docker push $(ALI_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG); \
done
docker tag $(PROJECT_NAME)-allinone:$(IMAGE_TAG) \
$(ALI_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
docker push $(ALI_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG)
# Clean up local images
.PHONY: clean
clean:
@for service in $(SERVICES); do \
docker rmi $(PROJECT_NAME)-$$service:$(IMAGE_TAG) || true; \
docker rmi $(DOCKER_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG) || true; \
docker rmi $(GHCR_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG) || true; \
docker rmi $(ALI_REGISTRY)/$(PROJECT_NAME)/$$service:$(IMAGE_TAG) || true; \
done
docker rmi $(PROJECT_NAME)-allinone:$(IMAGE_TAG) || true
docker rmi $(DOCKER_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG) || true
docker rmi $(GHCR_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG) || true
docker rmi $(ALI_REGISTRY)/$(PROJECT_NAME)/allinone:$(IMAGE_TAG) || true