mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-09 16:10:44 +02:00
Better approach than mixing host and container networks. Changes to docker-compose.yml: - Remove 'network_mode: host' from spark-tests container - Add spark-tests to seaweedfs-spark bridge network - Update SEAWEEDFS_FILER_HOST from 'localhost' to 'seaweedfs-filer' - Add depends_on to ensure services are healthy before tests - Update volume publicUrl from 'localhost:8080' to 'seaweedfs-volume:8080' Changes to workflow: - Remove separate build and test steps - Run tests via 'docker compose up spark-tests' - Use --abort-on-container-exit and --exit-code-from for proper exit codes - Simpler: one step instead of two Benefits: ✓ All components use Docker DNS (seaweedfs-master, seaweedfs-volume, seaweedfs-filer) ✓ No host/container network split or DNS resolution issues ✓ Consistent with how other SeaweedFS integration tests work ✓ Tests are fully containerized and reproducible ✓ Volume server accessible via seaweedfs-volume:8080 for all clients ✓ Automatic volume creation works (master can reach volume via gRPC) ✓ Data writes work (Spark can reach volume via Docker network) This matches the architecture of other integration tests and is cleaner.
98 lines
2.6 KiB
YAML
98 lines
2.6 KiB
YAML
services:
|
|
seaweedfs-master:
|
|
build:
|
|
context: ../../../docker
|
|
dockerfile: Dockerfile.local
|
|
image: seaweedfs:local
|
|
container_name: seaweedfs-spark-master
|
|
ports:
|
|
- "9333:9333"
|
|
- "19333:19333"
|
|
command: "master -ip=seaweedfs-master -ip.bind=0.0.0.0 -port=9333 -port.grpc=19333 -volumeSizeLimitMB=50 -defaultReplication=000 -peers=none"
|
|
networks:
|
|
- seaweedfs-spark
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:9333/cluster/status"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
seaweedfs-volume:
|
|
build:
|
|
context: ../../../docker
|
|
dockerfile: Dockerfile.local
|
|
image: seaweedfs:local
|
|
container_name: seaweedfs-spark-volume
|
|
ports:
|
|
- "8080:8080"
|
|
- "18080:18080"
|
|
command: "volume -mserver=seaweedfs-master:9333 -ip=seaweedfs-volume -ip.bind=0.0.0.0 -port=8080 -port.grpc=18080 -publicUrl=seaweedfs-volume:8080 -max=100 -dir=/data -preStopSeconds=1"
|
|
volumes:
|
|
- seaweedfs-volume-data:/data
|
|
depends_on:
|
|
seaweedfs-master:
|
|
condition: service_healthy
|
|
networks:
|
|
- seaweedfs-spark
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/status"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
seaweedfs-filer:
|
|
build:
|
|
context: ../../../docker
|
|
dockerfile: Dockerfile.local
|
|
image: seaweedfs:local
|
|
container_name: seaweedfs-spark-filer
|
|
ports:
|
|
- "8888:8888"
|
|
- "18888:18888"
|
|
command: "filer -master=seaweedfs-master:9333 -ip=seaweedfs-filer -ip.bind=0.0.0.0 -port=8888 -port.grpc=18888"
|
|
depends_on:
|
|
seaweedfs-master:
|
|
condition: service_healthy
|
|
seaweedfs-volume:
|
|
condition: service_healthy
|
|
networks:
|
|
- seaweedfs-spark
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8888/"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 15s
|
|
|
|
spark-tests:
|
|
image: maven:3.9-eclipse-temurin-17
|
|
container_name: seaweedfs-spark-tests
|
|
volumes:
|
|
- .:/workspace
|
|
- ~/.m2:/root/.m2
|
|
working_dir: /workspace
|
|
environment:
|
|
- SEAWEEDFS_TEST_ENABLED=true
|
|
- SEAWEEDFS_FILER_HOST=seaweedfs-filer
|
|
- SEAWEEDFS_FILER_PORT=8888
|
|
- SEAWEEDFS_FILER_GRPC_PORT=18888
|
|
- HADOOP_HOME=/tmp
|
|
command: sh -c "sleep 30 && mvn test"
|
|
depends_on:
|
|
seaweedfs-filer:
|
|
condition: service_healthy
|
|
networks:
|
|
- seaweedfs-spark
|
|
mem_limit: 4g
|
|
cpus: 2
|
|
|
|
networks:
|
|
seaweedfs-spark:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
seaweedfs-volume-data:
|
|
|