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 " "
|
|
|
|
|