1+ #! /bin/bash
2+ set +e
3+
4+ cmd=" $@ "
5+
6+ # if mysql user is null, set default user root
7+ if [[ ! -n $MYSQL_USER ]]; then
8+ # set default mysql user name root
9+ export MYSQL_USER=root
10+ fi
11+
12+ # set mysql host, default 127.0.0.1
13+ if [[ ! -n $MYSQL_HOST ]]; then
14+ export $MYSQL_HOST =127.0.0.1
15+ fi
16+
17+ # set default port, default is 8080
18+ if [[ ! -n $PORT ]]; then
19+ export PORT=8080
20+ fi
21+
22+ # PASSWORD NOT NULL
23+ if [[ ! -n $MYSQL_PASSWORD ]]; then
24+ echo " Please Set MYSQL_PASSWORD"
25+ exit ;
26+ fi
27+
28+ # update db user
29+ read -r -d ' ' rootCreate << -EOSQL || true
30+ use mysql;
31+ update user set password=PASSWORD('${MYSQL_PASSWORD} ') where User='root';
32+ update user set plugin='mysql_native_password';
33+ EOSQL
34+
35+ # detect mysql init or not
36+ DATA_DIRECTORY=/var/lib/mysql
37+ if [ " ` ls -A $DATA_DIRECTORY ` " = " " ]; then
38+ # init mysql data
39+ mysql_install_db
40+ fi
41+
42+ # Start Mysql
43+ service mysql start
44+
45+ if [[ ${# MYSQL_HOST} -eq 0 ]]; then
46+ echo " Please enter env MYSQL_HOST"
47+ exit ;
48+ fi
49+
50+ mysql --host=$MYSQL_HOST --user=$MYSQL_USER -e ' select version();' & > /dev/null;
51+ isMysqlInit=$?
52+ if [[ ${isMysqlInit} -eq 0 ]]; then
53+ # mysql is init
54+ mysql --host=$MYSQL_HOST --user=$MYSQL_USER -e " ${rootCreate} "
55+ fi
56+
57+ # First: waiting mysql up to do next cmd
58+ # start monitor mysql start up or not every one second
59+ until mysql --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e ' select version();' & > /dev/null; do
60+ >&2 echo " mysql is unavailable - retry 1s"
61+ sleep 1
62+ done
63+
64+ >&2 echo " mysql is up"
65+
66+ # Second: Create database
67+ mysql --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e ' Create Database If Not Exists flow_api_db Character Set UTF8;'
68+ mysql --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASSWORD -e ' Create Database If Not Exists flow_cc_db Character Set UTF8;'
69+
70+ # Third running migration to update table structure
71+ MIGRATION_PATH=./migration
72+
73+ # use flyway control database structure update
74+ echo " running migration"
75+
76+ # run migration to flow_api_db
77+ /flyway/flyway -user=$MYSQL_USER -password=$MYSQL_PASSWORD -ignoreMissingMigrations=true -baselineOnMigrate=true -baselineVersion=1.0 -locations=filesystem:$MIGRATION_PATH /api -url=jdbc:mysql://$MYSQL_HOST :3306/flow_api_db migrate
78+
79+ # run migration to flow_cc_db
80+ /flyway/flyway -user=$MYSQL_USER -password=$MYSQL_PASSWORD -ignoreMissingMigrations=true -baselineOnMigrate=true -baselineVersion=1.0 -locations=filesystem:$MIGRATION_PATH /cc -url=jdbc:mysql://$MYSQL_HOST :3306/flow_cc_db migrate
81+ echo " finish migration"
82+
83+
84+ # Four: everything ready, to run tomcat
85+ exec $cmd
0 commit comments