aboutsummaryrefslogtreecommitdiff
path: root/test/foundationdb/docker-compose.build.yml
blob: d470b232dcfee2e1443a826dafe6cc6635032db8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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:
        condition: service_completed_successfully
      seaweedfs-fdb-builder:
        condition: service_completed_successfully
    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: "740"
      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