mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
Merge pull request #10151 from filimonov/clickhouse-docker-util
clickhouse-docker-util
This commit is contained in:
commit
8ce1949377
57
utils/clickhouse-docker
Executable file
57
utils/clickhouse-docker
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
cat << HELP
|
||||
|
||||
clickhouse-docker -- open clickhouse-client of desired version in docker container (automatically removed after you exit bash shell).
|
||||
|
||||
EXAMPLE:
|
||||
- start latest version:
|
||||
clickhouse-docker latest
|
||||
|
||||
- start version 20.1:
|
||||
clickhouse-docker 20.1
|
||||
|
||||
- list avaliable versions:
|
||||
clickhouse-docker list
|
||||
HELP
|
||||
exit
|
||||
fi
|
||||
|
||||
param="$1"
|
||||
|
||||
if [ "${param}" = "list" ]
|
||||
then
|
||||
# https://stackoverflow.com/a/39454426/1555175
|
||||
wget -q https://registry.hub.docker.com/v1/repositories/yandex/clickhouse-server/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}'
|
||||
else
|
||||
docker pull yandex/clickhouse-server:${param}
|
||||
tmp_dir=$(mktemp -d -t ci-XXXXXXXXXX) # older version require /nonexistent folder to exist to run clickhouse client :D
|
||||
chmod 777 ${tmp_dir}
|
||||
set -e
|
||||
containerid=`docker run -v${tmp_dir}:/nonexistent -d yandex/clickhouse-server:${param}`
|
||||
set +e
|
||||
while :
|
||||
do
|
||||
# that trick with init-file allows to start clickhouse client inside bash shell (nice if you need exit to bash, check smth, and get back to clickhouse-client)
|
||||
docker exec -it ${containerid} bash -c 'bash --init-file <(echo "clickhouse client -m")'
|
||||
|
||||
printf "\n\nYou exited the session. What next?\n"
|
||||
echo " [Q]uit and remove container."
|
||||
echo " [R]estart clickhouse and run clickhouse-client in shell again."
|
||||
echo "You can also hit Ctrl+C to exit and keep container running."
|
||||
|
||||
while :
|
||||
do
|
||||
read -p "Quit or restart [Q/R]?" choice
|
||||
case "$choice" in
|
||||
q|Q|exit ) break 2;;
|
||||
r|R|restart ) echo "Restarting container ..."; docker restart ${containerid} > /dev/null; break 1;;
|
||||
* ) echo "I don't understand. Please type Q or R" ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
docker rm -f ${containerid} > /dev/null
|
||||
rm -rf ${tmp_dir}
|
||||
fi
|
Loading…
Reference in New Issue
Block a user