generate_services.sh 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/bin/bash
  2. # 检查是否提供了服务数量参数
  3. if [ $# -eq 0 ]; then
  4. echo "请输入要创建的服务数量:"
  5. read -r SERVICE_COUNT
  6. else
  7. SERVICE_COUNT=$1
  8. fi
  9. # 验证输入是否为数字
  10. if ! [[ "$SERVICE_COUNT" =~ ^[0-9]+$ ]]; then
  11. echo "错误:请输入有效的数字"
  12. exit 1
  13. fi
  14. if [ "$SERVICE_COUNT" -le 0 ]; then
  15. echo "错误:服务数量必须大于0"
  16. exit 1
  17. fi
  18. echo "正在生成 $SERVICE_COUNT 个服务..."
  19. # 备份原始文件
  20. cp docker-compose.yml docker-compose.yml.backup
  21. # 创建新的docker-compose.yml文件
  22. cat > docker-compose.yml << 'EOF'
  23. services:
  24. EOF
  25. # 生成每个服务
  26. for ((i=1; i<=SERVICE_COUNT; i++)); do
  27. PORT=$((3005 + i))
  28. if [ $i -eq 1 ]; then
  29. SERVICE_NAME="nockchain"
  30. VOLUME_DIR="nockchain"
  31. WALLET_DIR="nockchain-wallet"
  32. else
  33. SERVICE_NAME="nockchain$i"
  34. VOLUME_DIR="nockchain$i"
  35. WALLET_DIR="nockchain-wallet$i"
  36. fi
  37. cat >> docker-compose.yml << EOF
  38. $SERVICE_NAME:
  39. image: ghcr.io/lushdog/nockchain:latest
  40. network_mode: host
  41. privileged: true
  42. restart: unless-stopped
  43. volumes:
  44. - ./$VOLUME_DIR:/app/data
  45. - ./$WALLET_DIR:/root/.nockapp/wallet
  46. environment:
  47. - MINING_PUBKEY=\${MINING_PUBKEY:?please make sure to set your MINING_PUBKEY environment variable in the .env file}
  48. command:
  49. - "--npc-socket"
  50. - "nockchain.sock"
  51. - "--mining-pubkey"
  52. - "\${MINING_PUBKEY}"
  53. - "--bind"
  54. - "/ip4/0.0.0.0/udp/$PORT/quic-v1"
  55. - "--mine"
  56. logging:
  57. driver: "json-file"
  58. options:
  59. max-size: "10m"
  60. max-file: "3"
  61. EOF
  62. done
  63. echo ""
  64. echo "✅ 已成功生成 $SERVICE_COUNT 个服务"
  65. echo "📁 创建的服务和对应的文件夹:"
  66. for ((i=1; i<=SERVICE_COUNT; i++)); do
  67. PORT=$((3005 + i))
  68. if [ $i -eq 1 ]; then
  69. SERVICE_NAME="nockchain"
  70. VOLUME_DIR="nockchain"
  71. WALLET_DIR="nockchain-wallet"
  72. else
  73. SERVICE_NAME="nockchain$i"
  74. VOLUME_DIR="nockchain$i"
  75. WALLET_DIR="nockchain-wallet$i"
  76. fi
  77. echo " - 服务名: $SERVICE_NAME"
  78. echo " 数据文件夹: $VOLUME_DIR"
  79. echo " 钱包文件夹: $WALLET_DIR"
  80. echo " 端口: $PORT"
  81. echo ""
  82. done
  83. echo "🔄 原始文件已备份为 docker-compose.yml.backup"
  84. echo "🔗 请运行 'docker-compose up -d' 来启动服务"