aboutsummaryrefslogtreecommitdiff
path: root/test/foundationdb/docker-compose.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/foundationdb/docker-compose.yml')
-rw-r--r--test/foundationdb/docker-compose.yml128
1 files changed, 128 insertions, 0 deletions
diff --git a/test/foundationdb/docker-compose.yml b/test/foundationdb/docker-compose.yml
new file mode 100644
index 000000000..a1257d5c9
--- /dev/null
+++ b/test/foundationdb/docker-compose.yml
@@ -0,0 +1,128 @@
+services:
+
+ fdb1:
+ image: ${FOUNDATIONDB_IMAGE:-foundationdb/foundationdb:7.1.61}
+ environment:
+ - FDB_CLUSTER_FILE_CONTENTS
+ - FDB_NETWORKING_MODE=container
+ - FDB_COORDINATOR_PORT=${FDB_PORT:-4500}
+ - FDB_PORT=${FDB_PORT:-4500}
+ networks:
+ - fdb_network
+ healthcheck:
+ test: [ "CMD", "nc", "-z", "127.0.0.1", "4500" ]
+ interval: 5s
+ timeout: 5s
+ retries: 60
+
+ fdb2:
+ image: ${FOUNDATIONDB_IMAGE:-foundationdb/foundationdb:7.1.61}
+ environment:
+ - FDB_CLUSTER_FILE_CONTENTS
+ - FDB_NETWORKING_MODE=container
+ - FDB_COORDINATOR_PORT=${FDB_PORT:-4500}
+ - FDB_PORT=${FDB_PORT:-4500}
+ networks:
+ - fdb_network
+ healthcheck:
+ test: [ "CMD", "nc", "-z", "127.0.0.1", "4500" ]
+ interval: 5s
+ timeout: 5s
+ retries: 60
+
+ fdb3:
+ image: ${FOUNDATIONDB_IMAGE:-foundationdb/foundationdb:7.1.61}
+ environment:
+ - FDB_CLUSTER_FILE_CONTENTS
+ - FDB_NETWORKING_MODE=container
+ - FDB_COORDINATOR_PORT=${FDB_PORT:-4500}
+ - FDB_PORT=${FDB_PORT:-4500}
+ networks:
+ - fdb_network
+ healthcheck:
+ test: [ "CMD", "nc", "-z", "127.0.0.1", "4500" ]
+ interval: 5s
+ timeout: 5s
+ retries: 60
+
+ # Initialize and configure the database
+ fdb-init:
+ image: ${FOUNDATIONDB_IMAGE:-foundationdb/foundationdb:7.1.61}
+ configs:
+ - target: /var/fdb/config/fdb.cluster
+ source: fdb.cluster
+ environment:
+ - FDB_CLUSTER_FILE=/var/fdb/config/fdb.cluster
+ networks:
+ - fdb_network
+ depends_on:
+ fdb1:
+ condition: service_healthy
+ fdb2:
+ condition: service_healthy
+ fdb3:
+ condition: service_healthy
+ entrypoint: |
+ bash -c "
+ set -o errexit
+ # Wait for cluster to be ready
+ sleep 10
+
+ # Configure database
+ echo 'Initializing FoundationDB database...'
+ if ! fdbcli --exec 'configure new single ssd' >/tmp/fdbcli.out 2>&1; then
+ if ! grep -qi 'ERROR: Database already exists!' /tmp/fdbcli.out >/dev/null 2>/dev/null; then
+ echo 'ERROR: Database initialization failed!' >&2
+ cat /tmp/fdbcli.out >&2
+ exit 1
+ fi
+ fi
+
+ # Wait for configuration to complete
+ sleep 5
+
+ # Verify cluster status
+ fdbcli --exec 'status'
+
+ echo 'FoundationDB cluster initialization complete!'
+ "
+
+ # SeaweedFS service with FoundationDB filer
+ seaweedfs:
+ image: ${SEAWEEDFS_IMAGE:-chrislusf/seaweedfs:latest}
+ depends_on:
+ fdb-init:
+ condition: service_completed_successfully
+ networks:
+ - fdb_network
+ ports:
+ - "9333:9333"
+ - "19333:19333"
+ - "8888:8888"
+ - "8333:8333"
+ - "18888:18888"
+ configs:
+ - target: /var/fdb/config/fdb.cluster
+ source: fdb.cluster
+ volumes:
+ - ./s3.json:/etc/seaweedfs/s3.json
+ - ./filer.toml:/etc/seaweedfs/filer.toml
+ environment:
+ - WEED_LEVELDB2_ENABLED
+ - WEED_FOUNDATIONDB_ENABLED
+ - WEED_FOUNDATIONDB_CLUSTER_FILE
+ - WEED_FOUNDATIONDB_API_VERSION
+ - WEED_FOUNDATIONDB_TIMEOUT
+ - WEED_FOUNDATIONDB_MAX_RETRY_DELAY
+ - WEED_MASTER_VOLUME_GROWTH_COPY_1=1
+ - WEED_MASTER_VOLUME_GROWTH_COPY_OTHER=1
+ command: "weed server -ip=seaweedfs -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8333 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false"
+
+configs:
+ fdb.cluster:
+ content: |
+ ${FDB_CLUSTER_FILE_CONTENTS:-docker:docker@fdb1:4500,fdb2:4500,fdb3:4500}
+
+networks:
+ fdb_network:
+ driver: bridge