aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorPatrick Schmidt <patrick.schmidt@innogames.com>2022-08-31 18:27:53 +0200
committerGitHub <noreply@github.com>2022-08-31 09:27:53 -0700
commita73e177ecff78aee1c59b3b57a296b10a778bc9e (patch)
tree6d733b44cb9a059c6470ebb318595fc90dd5a9d8 /docker
parent4a4ef3cc3c24d0c86defe82445448a567316cc36 (diff)
downloadseaweedfs-a73e177ecff78aee1c59b3b57a296b10a778bc9e.tar.xz
seaweedfs-a73e177ecff78aee1c59b3b57a296b10a778bc9e.zip
Add an End-to-End workflow for FUSE mount (#3562)
* Add an e2e workflow to test FUSE mount * Fix deadlocks during concurrent r/w
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile.e2e30
-rw-r--r--docker/Dockerfile.local1
-rw-r--r--docker/Makefile14
-rw-r--r--docker/compose/e2e-mount.yml53
4 files changed, 93 insertions, 5 deletions
diff --git a/docker/Dockerfile.e2e b/docker/Dockerfile.e2e
new file mode 100644
index 000000000..70f173128
--- /dev/null
+++ b/docker/Dockerfile.e2e
@@ -0,0 +1,30 @@
+FROM ubuntu:22.04
+
+LABEL author="Chris Lu"
+
+RUN apt-get update && apt-get install -y curl fio fuse
+RUN mkdir -p /etc/seaweedfs /data/filerldb2
+
+COPY ./weed /usr/bin/
+COPY ./filer.toml /etc/seaweedfs/filer.toml
+COPY ./entrypoint.sh /entrypoint.sh
+
+# volume server grpc port
+EXPOSE 18080
+# volume server http port
+EXPOSE 8080
+# filer server grpc port
+EXPOSE 18888
+# filer server http port
+EXPOSE 8888
+# master server shared grpc port
+EXPOSE 19333
+# master server shared http port
+EXPOSE 9333
+
+VOLUME /data
+WORKDIR /data
+
+RUN chmod +x /entrypoint.sh
+
+ENTRYPOINT ["/entrypoint.sh"]
diff --git a/docker/Dockerfile.local b/docker/Dockerfile.local
index 947edffda..53cfd9571 100644
--- a/docker/Dockerfile.local
+++ b/docker/Dockerfile.local
@@ -5,6 +5,7 @@ RUN mkdir -p /etc/seaweedfs
COPY ./filer.toml /etc/seaweedfs/filer.toml
COPY ./entrypoint.sh /entrypoint.sh
RUN apk add fuse # for weed mount
+RUN apk add curl # for health checks
# volume server grpc port
EXPOSE 18080
diff --git a/docker/Makefile b/docker/Makefile
index 793ef17de..8c2e4d371 100644
--- a/docker/Makefile
+++ b/docker/Makefile
@@ -8,11 +8,17 @@ cgo ?= 0
binary:
export SWCOMMIT=$(shell git rev-parse --short HEAD)
export SWLDFLAGS="-X github.com/seaweedfs/seaweedfs/weed/util.COMMIT=$(SWCOMMIT)"
- cd ../weed; CGO_ENABLED=$(cgo) GOOS=linux go build $(options) -tags "$(tags)" -ldflags "-extldflags -static $(SWLDFLAGS)"; mv weed ../docker/
+ cd ../weed && CGO_ENABLED=$(cgo) GOOS=linux go build $(options) -tags "$(tags)" -ldflags "-extldflags -static $(SWLDFLAGS)" && mv weed ../docker/
+
+binary_race: options = -race
+binary_race: cgo = 1
+binary_race: binary
build: binary
docker build --no-cache -t chrislusf/seaweedfs:local -f Dockerfile.local .
- rm ./weed
+
+build_e2e: binary_race
+ docker build --no-cache -t chrislusf/seaweedfs:e2e -f Dockerfile.e2e .
go_build: # make go_build tags=elastic,ydb,gocdk,hdfs,5BytesOffset
docker build --build-arg TAGS=$(tags) --no-cache -t chrislusf/seaweedfs:go_build -f Dockerfile.go_build .
@@ -29,9 +35,7 @@ s3tests_build:
dev: build
docker-compose -f compose/local-dev-compose.yml -p seaweedfs up
-dev_race: options = -race
-dev_race: cgo = 1
-dev_race: build
+dev_race: binary_race
docker-compose -f compose/local-dev-compose.yml -p seaweedfs up
dev_tls: build certstrap
diff --git a/docker/compose/e2e-mount.yml b/docker/compose/e2e-mount.yml
new file mode 100644
index 000000000..d5da9c221
--- /dev/null
+++ b/docker/compose/e2e-mount.yml
@@ -0,0 +1,53 @@
+version: '3.9'
+
+services:
+ master:
+ image: chrislusf/seaweedfs:e2e
+ command: "-v=4 master -ip=master -ip.bind=0.0.0.0 -raftBootstrap"
+ healthcheck:
+ test: [ "CMD", "curl", "--fail", "-I", "http://localhost:9333/cluster/healthz" ]
+ interval: 1s
+ timeout: 60s
+
+ volume:
+ image: chrislusf/seaweedfs:e2e
+ command: "-v=4 volume -mserver=master:9333 -ip=volume -ip.bind=0.0.0.0 -preStopSeconds=1"
+ healthcheck:
+ test: [ "CMD", "curl", "--fail", "-I", "http://localhost:8080/healthz" ]
+ interval: 1s
+ timeout: 30s
+ depends_on:
+ master:
+ condition: service_healthy
+
+ filer:
+ image: chrislusf/seaweedfs:e2e
+ command: "-v=4 filer -master=master:9333 -ip=filer -ip.bind=0.0.0.0"
+ healthcheck:
+ test: [ "CMD", "curl", "--fail", "-I", "http://localhost:8888" ]
+ interval: 1s
+ timeout: 30s
+ depends_on:
+ volume:
+ condition: service_healthy
+
+ mount:
+ image: chrislusf/seaweedfs:e2e
+ command: "-v=4 mount -filer=filer:8888 -filer.path=/ -dirAutoCreate -dir=/mnt/seaweedfs"
+ cap_add:
+ - SYS_ADMIN
+ devices:
+ - /dev/fuse
+ security_opt:
+ - apparmor:unconfined
+ deploy:
+ resources:
+ limits:
+ memory: 4096m
+ healthcheck:
+ test: [ "CMD", "mountpoint", "-q", "--", "/mnt/seaweedfs" ]
+ interval: 1s
+ timeout: 30s
+ depends_on:
+ filer:
+ condition: service_healthy