version: '3.9' services: # Build SeaweedFS with FoundationDB support seaweedfs-fdb-builder: build: context: ../.. # Build from seaweedfs root dockerfile: test/foundationdb/Dockerfile.build image: seaweedfs:foundationdb container_name: seaweedfs-fdb-builder volumes: - seaweedfs-build:/build/output command: > sh -c " echo '๐Ÿ”จ Building SeaweedFS with FoundationDB support...' && cp /usr/local/bin/weed /build/output/weed-foundationdb && cp /usr/local/bin/fdb_store_test /build/output/fdb_store_test && echo 'โœ… Build complete! Binaries saved to volume.' && /usr/local/bin/weed version && echo '๐Ÿ“ฆ Available binaries:' && ls -la /build/output/ " networks: - fdb_network # FoundationDB cluster for testing fdb1: image: foundationdb/foundationdb:7.1.61 hostname: fdb1 environment: - FDB_NETWORKING_MODE=container networks: - fdb_network volumes: - fdb_data1:/var/fdb/data - fdb_config:/var/fdb/config command: > bash -c " echo 'docker:docker@fdb1:4500' > /var/fdb/config/fdb.cluster && /usr/bin/fdbserver --config_path=/var/fdb/config --datadir=/var/fdb/data --logdir=/var/fdb/logs --public_address=fdb1:4500 --listen_address=0.0.0.0:4500 --class=storage " # FoundationDB client for database initialization fdb-init: image: foundationdb/foundationdb:7.1.61 depends_on: - fdb1 volumes: - fdb_config:/var/fdb/config networks: - fdb_network command: > bash -c " sleep 10 && echo '๐Ÿ”ง Initializing FoundationDB...' && fdbcli -C /var/fdb/config/fdb.cluster --exec 'configure new single memory' && fdbcli -C /var/fdb/config/fdb.cluster --exec 'status' && echo 'โœ… FoundationDB initialized!' " # Test the built SeaweedFS with FoundationDB seaweedfs-test: image: seaweedfs:foundationdb depends_on: - fdb-init - seaweedfs-fdb-builder volumes: - fdb_config:/var/fdb/config - seaweedfs-build:/build/output networks: - fdb_network environment: WEED_FOUNDATIONDB_ENABLED: "true" WEED_FOUNDATIONDB_CLUSTER_FILE: "/var/fdb/config/fdb.cluster" WEED_FOUNDATIONDB_API_VERSION: "720" WEED_FOUNDATIONDB_DIRECTORY_PREFIX: "seaweedfs_test" command: > bash -c " echo '๐Ÿงช Testing FoundationDB integration...' && sleep 5 && echo '๐Ÿ“‹ Cluster file contents:' && cat /var/fdb/config/fdb.cluster && echo '๐Ÿš€ Starting SeaweedFS server with FoundationDB...' && /usr/local/bin/weed server -filer -master.volumeSizeLimitMB=16 -volume.max=0 & SERVER_PID=$! && sleep 10 && echo 'โœ… SeaweedFS started successfully with FoundationDB!' && echo '๐Ÿ Integration test passed!' && kill $SERVER_PID " volumes: fdb_data1: fdb_config: seaweedfs-build: networks: fdb_network: driver: bridge