137 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| #
 | |
| # create docker-compose.yml
 | |
| 
 | |
| set -e
 | |
| #set -x
 | |
| 
 | |
| # set parameters by default value
 | |
| composeYmlFile="./docker-compose.yml"
 | |
| dnodeNumber=1
 | |
| subnet="172.33.0.0/16"
 | |
| 
 | |
| while getopts "hn:f:s:" arg
 | |
| do
 | |
|   case $arg in
 | |
|     n)
 | |
|       dnodeNumber=$(echo $OPTARG)
 | |
|       ;;
 | |
|     f)
 | |
|       composeYmlFile=$(echo $OPTARG)
 | |
|       ;;
 | |
|     s)
 | |
|       subnet=$(echo $OPTARG)
 | |
|       ;;
 | |
|     h)
 | |
|       echo "Usage: `basename $0` -n [ dnode number] "
 | |
|       echo "                     -f [ yml file] "
 | |
|       exit 0
 | |
|       ;;
 | |
|     ?) #unknow option
 | |
|       echo "unkonw argument"
 | |
|       exit 1
 | |
|       ;;
 | |
|   esac
 | |
| done
 | |
| 
 | |
| echo "dnodeNumber=${dnodeNumber} composeYmlFile=${composeYmlFile}"
 | |
| 
 | |
| createFirstSection() {
 | |
|   ymlFile=$1  
 | |
|     
 | |
|   echo "version: '3.7'"                                                 > ${ymlFile}
 | |
|   echo ""                                                              >> ${ymlFile}
 | |
|   echo "x-node: &x-node"                                               >> ${ymlFile}
 | |
|   echo "  build:"                                                      >> ${ymlFile}
 | |
|   echo "    context: ."                                                >> ${ymlFile}
 | |
|   echo "    dockerfile: ./tdserver/Dockerfile"                         >> ${ymlFile}
 | |
|   echo "    args:"                                                     >> ${ymlFile}
 | |
|   echo "      - PACKAGE=TDengine-server-3.0.0.0-Linux-x64.tar.gz"      >> ${ymlFile}
 | |
|   echo "      - EXTRACTDIR=TDengine-server-3.0.0.0"                    >> ${ymlFile}
 | |
|   echo "  image: 'tdengine:3.0.0.0'"                                   >> ${ymlFile}
 | |
|   echo "  container_name: 'node1'"                                     >> ${ymlFile}
 | |
|   echo "  privileged: true"                                            >> ${ymlFile}
 | |
|   echo "  cap_add:"                                                    >> ${ymlFile}
 | |
|   echo "    - ALL"                                                     >> ${ymlFile}
 | |
|   echo "  stdin_open: true"                                            >> ${ymlFile}
 | |
|   echo "  tty: true"                                                   >> ${ymlFile}
 | |
|   echo "  environment:"                                                >> ${ymlFile}
 | |
|   echo '    TZ: "Asia/Shanghai"'                                       >> ${ymlFile}
 | |
|   echo '  command: >'                                                  >> ${ymlFile}
 | |
|   echo '    sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&'  >> ${ymlFile}
 | |
|   echo '    echo $TZ > /etc/timezone &&'                               >> ${ymlFile}
 | |
|   echo '    exec sysctl -w kernel.core_pattern=/corefile/core-%e-%p"'  >> ${ymlFile}
 | |
|   echo "  restart: always"                                             >> ${ymlFile}
 | |
|   echo "  hostname: node1"                                             >> ${ymlFile}
 | |
|   echo "  command: taosd"                                              >> ${ymlFile}
 | |
|   echo "  deploy:"                                                     >> ${ymlFile}
 | |
|   echo "    resources:"                                                >> ${ymlFile}
 | |
|   echo "       limits:"                                                >> ${ymlFile}
 | |
|   echo '          cpus: "2.00"'                                        >> ${ymlFile}
 | |
|   echo "          memory: 4G"                                          >> ${ymlFile}
 | |
|   echo "       reservations:"                                          >> ${ymlFile}
 | |
|   echo '          cpus: "1.00"'                                        >> ${ymlFile}
 | |
|   echo "          memory: 500M"                                        >> ${ymlFile}
 | |
|   echo "  volumes:"                                                    >> ${ymlFile}
 | |
|   echo "    - /etc/localtime:/etc/localtime:ro"                        >> ${ymlFile}
 | |
|   echo '    - $PWD:/work'                                              >> ${ymlFile}
 | |
|   echo '    - $PWD/storage/dnode1/data:/var/lib/taos'                  >> ${ymlFile}
 | |
|   echo '    - $PWD/storage/dnode1/log:/var/log/taos'                   >> ${ymlFile}
 | |
|   echo '    - $PWD/storage/dnode1/cfg:/etc/taos'                       >> ${ymlFile}
 | |
|   echo '    - $PWD/storage/dnode1/core:/corefile'                      >> ${ymlFile}
 | |
|   echo ""                                                              >> ${ymlFile}
 | |
|   echo "networks:"                                                     >> ${ymlFile}
 | |
|   echo "  tdnet:"                                                      >> ${ymlFile}
 | |
|   echo "    ipam:"                                                     >> ${ymlFile}
 | |
|   echo "      driver: default"                                         >> ${ymlFile}  
 | |
|   echo "      config:"                                                 >> ${ymlFile}
 | |
|   echo "        - subnet: ${subnet}"                                   >> ${ymlFile}  
 | |
|   echo ""                                                              >> ${ymlFile}
 | |
|   echo "services:"                                                     >> ${ymlFile}
 | |
| }
 | |
| 
 | |
| createSingleDnodesCfg() {
 | |
|   ymlFile=$1
 | |
|   index=$2
 | |
|   
 | |
|   ipPrefix=${subnet%.*}
 | |
|   
 | |
|   let ipIndex=index+1
 | |
| 
 | |
|   echo "  node${index}:"                                         >> ${ymlFile}
 | |
|   echo "    <<: *x-node"                                         >> ${ymlFile}
 | |
|   echo "    container_name: 'node${index}'"                      >> ${ymlFile}
 | |
|   echo "    hostname: node${index}"                              >> ${ymlFile}
 | |
|   echo "    networks:"                                           >> ${ymlFile}
 | |
|   echo "      tdnet:"                                            >> ${ymlFile}
 | |
|   echo "        ipv4_address: ${ipPrefix}.${ipIndex}"            >> ${ymlFile}
 | |
|   echo "    volumes:"                                            >> ${ymlFile}
 | |
|   echo "      - /etc/localtime:/etc/localtime:ro"                >> ${ymlFile}
 | |
|   echo "      - \$PWD:/work"                                     >> ${ymlFile}
 | |
|   echo "      - \$PWD/storage/dnode${index}/data:/var/lib/taos"  >> ${ymlFile}
 | |
|   echo "      - \$PWD/storage/dnode${index}/log:/var/log/taos"   >> ${ymlFile}
 | |
|   echo "      - \$PWD/storage/dnode${index}/cfg:/etc/taos"       >> ${ymlFile}
 | |
|   echo "      - \$PWD/storage/dnode${index}/core:/corefile"      >> ${ymlFile}
 | |
|   echo ""                                                        >> ${ymlFile}
 | |
| }
 | |
| 
 | |
| createDnodesOfDockerComposeYml() {
 | |
|   ymlFile=$1
 | |
|   dnodeNumber=$2
 | |
|   
 | |
|   for ((i=1; i<=${dnodeNumber}; i++)); do
 | |
|     createSingleDnodesCfg ${ymlFile} ${i}
 | |
|   done
 | |
| }
 | |
| 
 | |
| ########################################################################################
 | |
| ###############################  main process ##########################################
 | |
| 
 | |
| createFirstSection ${composeYmlFile}
 | |
| createDnodesOfDockerComposeYml ${composeYmlFile} ${dnodeNumber} 
 | |
| 
 | |
| echo "====create docker-compose.yml end===="
 | |
| echo " "
 | |
| 
 | |
| 
 |