-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcdcup.sh
executable file
·71 lines (68 loc) · 2.4 KB
/
cdcup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env bash
# Do not continue after error
set -e
display_help() {
echo "Usage: ./cdcup.sh { init | up | pipeline <yaml> | flink | stop | down | help }"
echo
echo "Commands:"
echo " * init:"
echo " Initialize a playground environment, and generate configuration files."
echo
echo " * up:"
echo " Start docker containers. This may take a while before database is ready."
echo
echo " * pipeline <yaml>:"
echo " Submit a YAML pipeline job."
echo
echo " * flink:"
echo " Print Flink Web dashboard URL."
echo
echo " * stop:"
echo " Stop all running playground containers."
echo
echo " * down:"
echo " Stop and remove containers, networks, and volumes."
echo
echo " * help:"
echo " Print this message."
}
if [ "$1" == 'init' ]; then
printf "🚩 Building bootstrap docker image...\n"
docker build -q -t cdcup/bootstrap .
rm -rf cdc && mkdir -p cdc
printf "🚩 Starting bootstrap wizard...\n"
docker run -it --rm -v "$(pwd)/cdc":/cdc cdcup/bootstrap
mv cdc/docker-compose.yaml ./docker-compose.yaml
mv cdc/pipeline-definition.yaml ./pipeline-definition.yaml
elif [ "$1" == 'up' ]; then
printf "🚩 Starting playground...\n"
docker compose up -d
docker compose exec jobmanager bash -c 'rm -rf /opt/flink-cdc'
docker compose cp cdc jobmanager:/opt/flink-cdc
elif [ "$1" == 'pipeline' ]; then
if [ -z "$2" ]; then
printf "Usage: ./cdcup.sh pipeline <pipeline-definition.yaml>\n"
exit 1
fi
printf "🚩 Submitting pipeline job...\n"
docker compose cp "$2" jobmanager:/opt/flink-cdc/pipeline-definition.yaml
startup_script="cd /opt/flink-cdc && ./bin/flink-cdc.sh ./pipeline-definition.yaml --flink-home /opt/flink"
if test -f ./cdc/lib/hadoop-uber.jar; then
startup_script="$startup_script --jar lib/hadoop-uber.jar"
fi
if test -f ./cdc/lib/mysql-connector-java.jar; then
startup_script="$startup_script --jar lib/mysql-connector-java.jar"
fi
docker compose exec jobmanager bash -c "$startup_script"
elif [ "$1" == 'flink' ]; then
port_info="$(docker compose port jobmanager 8081)"
printf "🚩 Visit Flink Dashboard at: http://localhost:%s\n" "${port_info##*:}"
elif [ "$1" == 'stop' ]; then
printf "🚩 Stopping playground...\n"
docker compose stop
elif [ "$1" == 'down' ]; then
printf "🚩 Purging playground...\n"
docker compose down -v
else
display_help
fi