#!/bin/bash # 检查是否提供了服务数量参数 if [ $# -eq 0 ]; then echo "请输入要创建的服务数量:" read -r SERVICE_COUNT else SERVICE_COUNT=$1 fi # 验证输入是否为数字 if ! [[ "$SERVICE_COUNT" =~ ^[0-9]+$ ]]; then echo "错误:请输入有效的数字" exit 1 fi if [ "$SERVICE_COUNT" -le 0 ]; then echo "错误:服务数量必须大于0" exit 1 fi echo "正在生成 $SERVICE_COUNT 个服务..." # 备份原始文件 cp docker-compose.yml docker-compose.yml.backup # 创建新的docker-compose.yml文件 cat > docker-compose.yml << 'EOF' services: EOF # 生成每个服务 for ((i=1; i<=SERVICE_COUNT; i++)); do PORT=$((3005 + i)) if [ $i -eq 1 ]; then SERVICE_NAME="nockchain" VOLUME_DIR="nockchain" WALLET_DIR="nockchain-wallet" else SERVICE_NAME="nockchain$i" VOLUME_DIR="nockchain$i" WALLET_DIR="nockchain-wallet$i" fi cat >> docker-compose.yml << EOF $SERVICE_NAME: image: ghcr.io/lushdog/nockchain:latest network_mode: host privileged: true restart: unless-stopped volumes: - ./$VOLUME_DIR:/app/data - ./$WALLET_DIR:/root/.nockapp/wallet environment: - MINING_PUBKEY=\${MINING_PUBKEY:?please make sure to set your MINING_PUBKEY environment variable in the .env file} command: - "--npc-socket" - "nockchain.sock" - "--mining-pubkey" - "\${MINING_PUBKEY}" - "--bind" - "/ip4/0.0.0.0/udp/$PORT/quic-v1" - "--mine" logging: driver: "json-file" options: max-size: "10m" max-file: "3" EOF done echo "" echo "✅ 已成功生成 $SERVICE_COUNT 个服务" echo "📁 创建的服务和对应的文件夹:" for ((i=1; i<=SERVICE_COUNT; i++)); do PORT=$((3005 + i)) if [ $i -eq 1 ]; then SERVICE_NAME="nockchain" VOLUME_DIR="nockchain" WALLET_DIR="nockchain-wallet" else SERVICE_NAME="nockchain$i" VOLUME_DIR="nockchain$i" WALLET_DIR="nockchain-wallet$i" fi echo " - 服务名: $SERVICE_NAME" echo " 数据文件夹: $VOLUME_DIR" echo " 钱包文件夹: $WALLET_DIR" echo " 端口: $PORT" echo "" done echo "🔄 原始文件已备份为 docker-compose.yml.backup" echo "🔗 请运行 'docker-compose up -d' 来启动服务"