docker-compose-ec-test.yml 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. name: admin_integration
  2. networks:
  3. seaweed_net:
  4. driver: bridge
  5. services:
  6. master:
  7. image: chrislusf/seaweedfs:local
  8. ports:
  9. - "9333:9333"
  10. - "19333:19333"
  11. command: "master -ip=master -mdir=/data -volumeSizeLimitMB=50"
  12. environment:
  13. - WEED_MASTER_VOLUME_GROWTH_COPY_1=1
  14. - WEED_MASTER_VOLUME_GROWTH_COPY_2=2
  15. - WEED_MASTER_VOLUME_GROWTH_COPY_OTHER=1
  16. volumes:
  17. - ./data/master:/data
  18. networks:
  19. - seaweed_net
  20. volume1:
  21. image: chrislusf/seaweedfs:local
  22. ports:
  23. - "8080:8080"
  24. - "18080:18080"
  25. command: "volume -mserver=master:9333 -ip=volume1 -dir=/data -max=10"
  26. depends_on:
  27. - master
  28. volumes:
  29. - ./data/volume1:/data
  30. networks:
  31. - seaweed_net
  32. volume2:
  33. image: chrislusf/seaweedfs:local
  34. ports:
  35. - "8081:8080"
  36. - "18081:18080"
  37. command: "volume -mserver=master:9333 -ip=volume2 -dir=/data -max=10"
  38. depends_on:
  39. - master
  40. volumes:
  41. - ./data/volume2:/data
  42. networks:
  43. - seaweed_net
  44. volume3:
  45. image: chrislusf/seaweedfs:local
  46. ports:
  47. - "8082:8080"
  48. - "18082:18080"
  49. command: "volume -mserver=master:9333 -ip=volume3 -dir=/data -max=10"
  50. depends_on:
  51. - master
  52. volumes:
  53. - ./data/volume3:/data
  54. networks:
  55. - seaweed_net
  56. volume4:
  57. image: chrislusf/seaweedfs:local
  58. ports:
  59. - "8083:8080"
  60. - "18083:18080"
  61. command: "volume -mserver=master:9333 -ip=volume4 -dir=/data -max=10"
  62. depends_on:
  63. - master
  64. volumes:
  65. - ./data/volume4:/data
  66. networks:
  67. - seaweed_net
  68. volume5:
  69. image: chrislusf/seaweedfs:local
  70. ports:
  71. - "8084:8080"
  72. - "18084:18080"
  73. command: "volume -mserver=master:9333 -ip=volume5 -dir=/data -max=10"
  74. depends_on:
  75. - master
  76. volumes:
  77. - ./data/volume5:/data
  78. networks:
  79. - seaweed_net
  80. volume6:
  81. image: chrislusf/seaweedfs:local
  82. ports:
  83. - "8085:8080"
  84. - "18085:18080"
  85. command: "volume -mserver=master:9333 -ip=volume6 -dir=/data -max=10"
  86. depends_on:
  87. - master
  88. volumes:
  89. - ./data/volume6:/data
  90. networks:
  91. - seaweed_net
  92. filer:
  93. image: chrislusf/seaweedfs:local
  94. ports:
  95. - "8888:8888"
  96. - "18888:18888"
  97. command: "filer -master=master:9333 -ip=filer"
  98. depends_on:
  99. - master
  100. volumes:
  101. - ./data/filer:/data
  102. networks:
  103. - seaweed_net
  104. admin:
  105. image: chrislusf/seaweedfs:local
  106. ports:
  107. - "23646:23646" # HTTP admin interface (default port)
  108. - "33646:33646" # gRPC worker communication (23646 + 10000)
  109. command: "-v=2 admin -port=23646 -masters=master:9333 -dataDir=/data"
  110. depends_on:
  111. - master
  112. - filer
  113. volumes:
  114. - ./data/admin:/data
  115. networks:
  116. - seaweed_net
  117. worker1:
  118. image: chrislusf/seaweedfs:local
  119. command: "-v=2 worker -admin=admin:23646 -capabilities=erasure_coding,vacuum -maxConcurrent=2"
  120. depends_on:
  121. - admin
  122. volumes:
  123. - ./data/worker1:/data
  124. networks:
  125. - seaweed_net
  126. environment:
  127. - WORKER_ID=worker-1
  128. worker2:
  129. image: chrislusf/seaweedfs:local
  130. command: "-v=2 worker -admin=admin:23646 -capabilities=erasure_coding,vacuum -maxConcurrent=2"
  131. depends_on:
  132. - admin
  133. volumes:
  134. - ./data/worker2:/data
  135. networks:
  136. - seaweed_net
  137. environment:
  138. - WORKER_ID=worker-2
  139. worker3:
  140. image: chrislusf/seaweedfs:local
  141. command: "-v=2 worker -admin=admin:23646 -capabilities=erasure_coding,vacuum -maxConcurrent=2"
  142. depends_on:
  143. - admin
  144. volumes:
  145. - ./data/worker3:/data
  146. networks:
  147. - seaweed_net
  148. environment:
  149. - WORKER_ID=worker-3
  150. load_generator:
  151. image: chrislusf/seaweedfs:local
  152. entrypoint: ["/bin/sh"]
  153. command: >
  154. -c "
  155. echo 'Starting load generator...';
  156. sleep 30;
  157. echo 'Generating continuous load with 50MB volume limit...';
  158. while true; do
  159. echo 'Writing test files...';
  160. echo 'Test file content at $(date)' | /usr/bin/weed upload -server=master:9333;
  161. sleep 5;
  162. echo 'Deleting some files...';
  163. /usr/bin/weed shell -master=master:9333 <<< 'fs.rm /test_file_*' || true;
  164. sleep 10;
  165. done
  166. "
  167. depends_on:
  168. - master
  169. - filer
  170. - admin
  171. networks:
  172. - seaweed_net
  173. monitor:
  174. image: alpine:latest
  175. entrypoint: ["/bin/sh"]
  176. command: >
  177. -c "
  178. apk add --no-cache curl jq;
  179. echo 'Starting cluster monitor...';
  180. sleep 30;
  181. while true; do
  182. echo '=== Cluster Status $(date) ===';
  183. echo 'Master status:';
  184. curl -s http://master:9333/cluster/status | jq '.IsLeader, .Peers' || echo 'Master not ready';
  185. echo;
  186. echo 'Admin status:';
  187. curl -s http://admin:23646/ | grep -o 'Admin.*Interface' || echo 'Admin not ready';
  188. echo;
  189. echo 'Volume count by server:';
  190. curl -s http://master:9333/vol/status | jq '.Volumes | length' || echo 'Volumes not ready';
  191. echo;
  192. sleep 60;
  193. done
  194. "
  195. depends_on:
  196. - master
  197. - admin
  198. - filer
  199. networks:
  200. - seaweed_net
  201. vacuum-tester:
  202. image: chrislusf/seaweedfs:local
  203. entrypoint: ["/bin/sh"]
  204. command: >
  205. -c "
  206. echo 'Installing dependencies for vacuum testing...';
  207. apk add --no-cache jq curl go bash;
  208. echo 'Vacuum tester ready...';
  209. echo 'Use: docker-compose exec vacuum-tester sh';
  210. echo 'Available commands: go, weed, curl, jq, bash, sh';
  211. sleep infinity
  212. "
  213. depends_on:
  214. - master
  215. - admin
  216. - filer
  217. volumes:
  218. - .:/testing
  219. working_dir: /testing
  220. networks:
  221. - seaweed_net
  222. environment:
  223. - MASTER_HOST=master:9333
  224. - ADMIN_HOST=admin:23646