-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
101 lines (79 loc) 路 2.68 KB
/
Copy pathMakefile
File metadata and controls
101 lines (79 loc) 路 2.68 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
.PHONY: build run test docker-build docker-run docker-push clean release docker-buildx docker-buildx-push docker-buildx-setup docker-validate docker-regression-test
APP_NAME = malachi
DOCKER_USERNAME ?= hectorcardoso
VERSION ?= $(shell grep '@version' mix.exs | head -1 | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/')
PLATFORMS ?= linux/amd64,linux/arm64
build:
mix deps.get
mix compile
run:
mix run --no-halt
test:
mix test
release:
MIX_ENV=prod mix deps.get
MIX_ENV=prod mix release
docker-build:
docker build --build-arg APP_VERSION=$(VERSION) -t $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION) .
docker tag $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION) $(DOCKER_USERNAME)/$(APP_NAME):latest
docker-buildx-setup:
@echo "Setting up Docker Buildx..."
docker buildx create --name $(APP_NAME)-builder --use --bootstrap || docker buildx use $(APP_NAME)-builder
docker buildx inspect --bootstrap
docker-buildx:
@echo "Building multi-platform Docker image ($(PLATFORMS))..."
docker buildx build \
--platform $(PLATFORMS) \
--build-arg APP_VERSION=$(VERSION) \
-t $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION) \
-t $(DOCKER_USERNAME)/$(APP_NAME):latest \
--load \
.
docker-buildx-push:
@echo "Building and pushing multi-platform Docker image ($(PLATFORMS))..."
docker buildx build \
--platform $(PLATFORMS) \
--build-arg APP_VERSION=$(VERSION) \
-t $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION) \
-t $(DOCKER_USERNAME)/$(APP_NAME):latest \
--push \
.
docker-run:
docker run \
--name $(APP_NAME) \
-p 4040:4040 \
-p 4041:4041 \
-e MALACHI_ADMIN_PASS="admin_dev_pass" \
-e MALACHI_PRODUCER_PASS="producer_dev_pass" \
-e MALACHI_CONSUMER_PASS="consumer_dev_pass" \
-e MALACHI_APP_PASS="app_dev_pass" \
$(DOCKER_USERNAME)/$(APP_NAME):$(VERSION)
docker-stop:
docker stop $(APP_NAME) || true
docker rm $(APP_NAME) || true
docker-push:
docker push $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION)
docker push $(DOCKER_USERNAME)/$(APP_NAME):latest
docker-logs:
docker logs -f $(APP_NAME)
compose-up:
docker-compose up -d
compose-down:
docker-compose down
compose-logs:
docker-compose logs -f
compose-producer:
docker-compose --profile tools run --rm producer
docker-validate:
@echo "Running Docker build validation..."
./scripts/validate-docker-build.sh
docker-regression-test:
@echo "Running Docker regression tests..."
./scripts/docker-regression-test.sh $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION)
docker-test-all: docker-build docker-validate docker-regression-test
@echo "All Docker tests completed successfully!"
clean:
rm -rf _build deps
docker rmi $(DOCKER_USERNAME)/$(APP_NAME):$(VERSION) || true
docker rmi $(DOCKER_USERNAME)/$(APP_NAME):latest || true
all: build test docker-build