aboutsummaryrefslogtreecommitdiff
path: root/docker/Makefile
blob: 31ccf9da12937f933693ea10d9483a4b538f2fa0 (plain)
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
132
133
134
135
136
137
138
139
140
141
142
143
all: gen

.PHONY : gen

gen: dev

cgo ?= 0
ldflags_extra ?= -extldflags -static

binary:
	export SWCOMMIT=$(shell git rev-parse --short HEAD)
	export SWLDFLAGS="-X github.com/seaweedfs/seaweedfs/weed/util/version.COMMIT=$(SWCOMMIT)"
	cd ../weed && CGO_ENABLED=$(cgo) GOOS=linux go build $(options) -tags "$(tags)" -ldflags "-s -w $(ldflags_extra) $(SWLDFLAGS)" -o weed_binary && mv weed_binary ../docker/weed
	cd ../other/mq_client_example/agent_pub_record && CGO_ENABLED=$(cgo) GOOS=linux go build && mv agent_pub_record ../../../docker/
	cd ../other/mq_client_example/agent_sub_record && CGO_ENABLED=$(cgo) GOOS=linux go build && mv agent_sub_record ../../../docker/

# Race detector requires CGO and dynamic linking - don't use -static
binary_race: options = -race
binary_race: cgo = 1
binary_race: ldflags_extra =
binary_race: binary

build: binary
	docker build --no-cache -t chrislusf/seaweedfs:local -f Dockerfile.local .

build_e2e: binary_race
	docker buildx build \
		--cache-from=type=local,src=/tmp/.buildx-cache \
		--cache-to=type=local,dest=/tmp/.buildx-cache-new,mode=max \
		--load \
		-t chrislusf/seaweedfs:e2e \
		-f Dockerfile.e2e .
	# Move cache to avoid growing cache size
	rm -rf /tmp/.buildx-cache || true
	mv /tmp/.buildx-cache-new /tmp/.buildx-cache || true

go_build: # make go_build tags=elastic,ydb,gocdk,hdfs,5BytesOffset,tarantool
	docker build --build-arg TAGS=$(tags) --no-cache -t chrislusf/seaweedfs:go_build -f Dockerfile.go_build .

go_build_large_disk:
	docker build --build-arg TAGS=large_disk --no-cache -t chrislusf/seaweedfs:large_disk -f Dockerfile.go_build .

build_rocksdb_dev_env:
	docker build --no-cache -t chrislusf/rocksdb_dev_env -f Dockerfile.rocksdb_dev_env .

build_rocksdb_local: build_rocksdb_dev_env
	cd .. ; docker build --no-cache -t chrislusf/seaweedfs:rocksdb_local -f docker/Dockerfile.rocksdb_large_local .

build_rocksdb:
	docker build --no-cache -t chrislusf/seaweedfs:rocksdb -f Dockerfile.rocksdb_large .

build_tarantool_dev_env:
	docker build --no-cache -t chrislusf/tarantool_dev_env -f Dockerfile.tarantool.dev_env .

s3tests_build:
	docker build --no-cache -t chrislusf/ceph-s3-tests:local -f Dockerfile.s3tests .

dev: build
	docker compose -f compose/local-dev-compose.yml -p seaweedfs up

dev_race: binary_race
	docker compose -f compose/local-dev-compose.yml -p seaweedfs up

dev_tls: build certstrap
	ENV_FILE="tls.env" docker compose -f compose/local-dev-compose.yml -p seaweedfs up

dev_mount: build
	docker compose -f compose/local-mount-compose.yml -p seaweedfs up

run_image: build
	docker run --rm -ti --device /dev/fuse --cap-add SYS_ADMIN --entrypoint /bin/sh chrislusf/seaweedfs:local

profile_mount: build
	docker compose -f compose/local-mount-profile-compose.yml -p seaweedfs up

k8s: build
	docker compose -f compose/local-k8s-compose.yml -p seaweedfs up

dev_registry: build
	docker compose -f compose/local-registry-compose.yml -p seaweedfs up

dev_replicate:
	docker build --build-arg TAGS=gocdk --no-cache -t chrislusf/seaweedfs:local -f Dockerfile.go_build .
	docker compose -f compose/local-replicate-compose.yml -p seaweedfs up

dev_auditlog: build
	docker compose -f compose/local-auditlog-compose.yml -p seaweedfs up

dev_nextcloud: build
	docker compose -f compose/local-nextcloud-compose.yml -p seaweedfs up

cluster: build
	docker compose -f compose/local-cluster-compose.yml -p seaweedfs up

2clusters: build
	docker compose -f compose/local-clusters-compose.yml -p seaweedfs up

2mount: build
	docker compose -f compose/local-sync-mount-compose.yml -p seaweedfs up

filer_backup: build
	docker compose -f compose/local-filer-backup-compose.yml -p seaweedfs up

hashicorp_raft: build
	docker compose -f compose/local-hashicorp-raft-compose.yml -p seaweedfs up

s3tests: build s3tests_build
	docker compose -f compose/local-s3tests-compose.yml -p seaweedfs up

brokers: build
	docker compose -f compose/local-brokers-compose.yml -p seaweedfs up

agent: build
	docker compose -f compose/local-mq-test.yml -p seaweedfs up

filer_etcd: build
	docker stack deploy -c compose/swarm-etcd.yml fs

test_etcd: build
	docker compose -f compose/test-etcd-filer.yml -p seaweedfs up

test_ydb: tags = ydb
test_ydb: build
	docker compose -f compose/test-ydb-filer.yml -p seaweedfs up

test_tarantool: tags = tarantool
test_tarantool: build_tarantool_dev_env build
	docker compose -f compose/test-tarantool-filer.yml -p seaweedfs up

clean:
	rm ./weed

certstrap:
	go install -v github.com/square/certstrap@latest
	certstrap --depot-path compose/tls init --curve P-256 --passphrase "" --common-name "SeaweedFS CA" || true
	certstrap --depot-path compose/tls request-cert --ou "SeaweedFS" --curve P-256 --passphrase "" --domain localhost --common-name volume01.dev || true
	certstrap --depot-path compose/tls request-cert --ou "SeaweedFS" --curve P-256 --passphrase "" --common-name master01.dev || true
	certstrap --depot-path compose/tls request-cert --ou "SeaweedFS" --curve P-256 --passphrase "" --common-name filer01.dev || true
	certstrap --depot-path compose/tls request-cert --ou "SeaweedFS" --curve P-256 --passphrase "" --common-name client01.dev || true
	certstrap --depot-path compose/tls sign --CA "SeaweedFS CA" volume01.dev || true
	certstrap --depot-path compose/tls sign --CA "SeaweedFS CA" master01.dev || true
	certstrap --depot-path compose/tls sign --CA "SeaweedFS CA" filer01.dev || true
	certstrap --depot-path compose/tls sign --CA "SeaweedFS CA" client01.dev || true