-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (49 loc) · 2.5 KB
/
Copy pathMakefile
File metadata and controls
59 lines (49 loc) · 2.5 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
# ========== 使用说明 ==========
# make build PLATFORM=linux/arm64 # 构建镜像,默认 linux/amd64
# make build-node24 PLATFORM=linux/arm64 # 构建 node24 镜像
# make check PLATFORM=linux/arm64 # 运行最新版本镜像测试
# make check-node24 PLATFORM=linux/arm64 # 运行 node24 镜像测试
# make push PLATFORM=linux/arm64 # 推送所有版本镜像
# make push-node24 PLATFORM=linux/arm64 # 推送 node24 镜像
# make login TOKEN=your_token # 登录 ghcr.io
# make pull # 拉取基础镜像
# ========== 配置 ==========
PLATFORM ?= linux/amd64
BASE_IMAGES := node:16-alpine node:18-alpine node:20-alpine node:22-alpine node:24-alpine golang:1.21-alpine
DOCKER_USERNAME := xusenlin
PROJECT_NAME := marewood
PROJECT_VERSION := 1.2
BUILD_NODE_IMAGE := 16 18 20 22 24
# 获取项目全部基础镜像
pull:
@for image in $(BASE_IMAGES); do \
echo "\nPulling base image for $$image..."; \
docker pull $$image; \
done
build:
@for nodeVersion in $(BUILD_NODE_IMAGE); do \
imageName=ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node$$nodeVersion; \
echo "\nBuilding Docker image for $$imageName with platform $(PLATFORM)..."; \
docker build --platform $(PLATFORM) --build-arg NODE_VERSION=$$nodeVersion -t $$imageName .; \
done
build-node24:
@imageName=ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node24; \
echo "\nBuilding Docker image for $$imageName with platform $(PLATFORM)..."; \
docker build --platform $(PLATFORM) --build-arg NODE_VERSION=24 -t $$imageName .
check:
docker run -d --name marewood -p 8088:8088 -v marewood-data-$(lastword $(BUILD_NODE_IMAGE)):/marewood/resources ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node$(lastword $(BUILD_NODE_IMAGE))
check-node24:
docker run -d --name marewood -p 8088:8088 -v marewood-data-24:/marewood/resources ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node24
push:
@for nodeVersion in $(BUILD_NODE_IMAGE); do \
imageName=ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node$$nodeVersion; \
echo "\nPushing Docker image $$imageName..."; \
docker push $$imageName; \
done
push-node24:
@imageName=ghcr.io/$(DOCKER_USERNAME)/$(PROJECT_NAME):$(PROJECT_VERSION)-node24; \
echo "\nPushing Docker image $$imageName..."; \
docker push $$imageName
login:
@echo "$(TOKEN)" | docker login ghcr.io -u $(DOCKER_USERNAME) --password-stdin
.PHONY: pull build build-node24 check check-node24 push push-node24 login