diff options
| author | Patrick Schmidt <patrick.schmidt@innogames.com> | 2022-08-31 18:27:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-31 09:27:53 -0700 |
| commit | a73e177ecff78aee1c59b3b57a296b10a778bc9e (patch) | |
| tree | 6d733b44cb9a059c6470ebb318595fc90dd5a9d8 /docker | |
| parent | 4a4ef3cc3c24d0c86defe82445448a567316cc36 (diff) | |
| download | seaweedfs-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.e2e | 30 | ||||
| -rw-r--r-- | docker/Dockerfile.local | 1 | ||||
| -rw-r--r-- | docker/Makefile | 14 | ||||
| -rw-r--r-- | docker/compose/e2e-mount.yml | 53 |
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 |
