fix: use container hostname for volume server to enable automatic volume creation

Root cause identified:
- Volume server was using -ip=127.0.0.1
- Master couldn't reach volume server at 127.0.0.1 from its container
- When Spark requested assignment, master tried to create volume via gRPC
- Master's gRPC call to 127.0.0.1:18080 failed (reached itself, not volume server)
- Result: 'No writable volumes' error

Solution:
- Change volume server to use -ip=seaweedfs-volume (container hostname)
- Master can now reach volume server at seaweedfs-volume:18080
- Automatic volume creation works as designed
- Kept -publicUrl=127.0.0.1:8080 for external clients (host network)

Workflow changes:
- Remove forced volume creation (curl POST to /vol/grow)
- Volumes will be created automatically on first write request
- Keep diagnostic output for troubleshooting
- Simplified startup verification

This matches how other SeaweedFS tests work with Docker networking.
This commit is contained in:
chrislu
2025-11-22 23:09:27 -08:00
parent 3586f6786e
commit ce40e2fd58
2 changed files with 5 additions and 47 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ services:
ports:
- "8080:8080"
- "18080:18080"
command: "volume -mserver=seaweedfs-master:9333 -ip=127.0.0.1 -ip.bind=0.0.0.0 -port=8080 -port.grpc=18080 -publicUrl=127.0.0.1:8080 -max=0 -dir=/data -preStopSeconds=1"
command: "volume -mserver=seaweedfs-master:9333 -ip=seaweedfs-volume -ip.bind=0.0.0.0 -port=8080 -port.grpc=18080 -publicUrl=127.0.0.1:8080 -max=0 -dir=/data -preStopSeconds=1"
volumes:
- seaweedfs-volume-data:/data
depends_on: