diff --git a/contact-center/Dockerfile b/contact-center/Dockerfile index ebe484d6..307f3af9 100644 --- a/contact-center/Dockerfile +++ b/contact-center/Dockerfile @@ -39,9 +39,7 @@ RUN /bin/bash -c "mkdir -p /{data,logs}" # build WAR RUN mkdir -p /opt/chatopera COPY ./app/target/contact-center-*.war /opt/chatopera/contact-center.war -COPY ./assets/setup-mysql-db.sh /opt/chatopera -COPY ./assets/utils.sh /opt/chatopera -COPY ./assets/docker-entrypoint.sh /opt/chatopera +COPY ./assets/*.sh /opt/chatopera RUN chmod +x /opt/chatopera/*.sh WORKDIR /opt/chatopera diff --git a/contact-center/app/pom.xml b/contact-center/app/pom.xml index 5dad61a2..5eef9af8 100644 --- a/contact-center/app/pom.xml +++ b/contact-center/app/pom.xml @@ -434,7 +434,7 @@ ../config/sql/ - cosinee-MySQL-slim.sql + **/*.sql diff --git a/contact-center/assets/docker-entrypoint.sh b/contact-center/assets/docker-entrypoint.sh index ea1b8c64..0a12d0df 100755 --- a/contact-center/assets/docker-entrypoint.sh +++ b/contact-center/assets/docker-entrypoint.sh @@ -11,7 +11,8 @@ baseDir=$(cd `dirname "$0"`;pwd) # main [ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return cd $baseDir -./setup-mysql-db.sh +./mysql.setup.db.sh +./mysql.upgrade.db.sh if [ $? -eq 0 ]; then java -jar contact-center.war diff --git a/contact-center/assets/setup-mysql-db.sh b/contact-center/assets/mysql.setup.db.sh similarity index 93% rename from contact-center/assets/setup-mysql-db.sh rename to contact-center/assets/mysql.setup.db.sh index 1c15d8cd..c6978c90 100755 --- a/contact-center/assets/setup-mysql-db.sh +++ b/contact-center/assets/mysql.setup.db.sh @@ -12,7 +12,7 @@ CONTACT_CENTER_DB=`parse_dbname ${SPRING_DATASOURCE_URL}` CONTACT_CENTER_WAR=/opt/chatopera/contact-center.war MYSQL_SCRIPT_NAME=cosinee-MySQL-slim.sql -println "connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****" +println "[setup] connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****" # functions function import_db(){ diff --git a/contact-center/assets/mysql.upgrade.db.sh b/contact-center/assets/mysql.upgrade.db.sh new file mode 100755 index 00000000..0b8a63b6 --- /dev/null +++ b/contact-center/assets/mysql.upgrade.db.sh @@ -0,0 +1,77 @@ +#! /bin/bash +########################################### +# +########################################### + +# constants +baseDir=$(cd `dirname "$0"`;pwd) +source $baseDir/utils.sh +MYSQL_WRITEMODE_IP=`parse_host ${SPRING_DATASOURCE_URL}` +MYSQL_WRITEMODE_PORT=`parse_port ${SPRING_DATASOURCE_URL}` +CONTACT_CENTER_DB=`parse_dbname ${SPRING_DATASOURCE_URL}` +CONTACT_CENTER_WAR=/opt/chatopera/contact-center.war +UPGRADE_DB_SCRIPT_DIR=/tmp/ROOT/upgrade + +println "[upgrade] connecting to $MYSQL_WRITEMODE_IP:$MYSQL_WRITEMODE_PORT/$CONTACT_CENTER_DB with $SPRING_DATASOURCE_USERNAME/****" + +# functions +function upgrade_db(){ + if [ ! -f $1 ]; then exit 1; fi + println "run MySQL DB upgrade script" $1 "..." + mysql -u ${SPRING_DATASOURCE_USERNAME} \ + -h ${MYSQL_WRITEMODE_IP} \ + -P ${MYSQL_WRITEMODE_PORT} -p${SPRING_DATASOURCE_PASSWORD} \ + < $1 + + # verify status + if [ ! $? -eq 0 ]; then + exit 1 + fi +} + +function extract_war(){ + println "extract SQL script ..." + if [ -f $CONTACT_CENTER_WAR ]; then + cd /tmp + if [ -d ROOT ]; then + rm -rf ROOT + fi + + unzip -q $CONTACT_CENTER_WAR -d ROOT + if [ -f /tmp/ROOT/$MYSQL_SCRIPT_NAME ]; then + println "start to import database ..." + import_db /tmp/ROOT/$MYSQL_SCRIPT_NAME + # verify status + if [ ! $? -eq 0 ]; then + exit 1 + fi + rm -rf /tmp/ROOT + else + println "SQL script not exist." + exit 1 + fi + else + println "War file not exist." + fi +} + +# main +[ -z "${BASH_SOURCE[0]}" -o "${BASH_SOURCE[0]}" = "$0" ] || return + +## check root dir +if [ ! -d /tmp/ROOT ]; then + extract_war +fi + +## run scripts +if [ -d $UPGRADE_DB_SCRIPT_DIR ]; then + cd $UPGRADE_DB_SCRIPT_DIR + for x in `find . -name "*.sql"|sort`; do + echo "[run] " $x " ..." + upgrade_db $x + if [ ! $? -eq 0 ]; then + echo "Failed result with" $x + exit 1 + fi + done +fi \ No newline at end of file diff --git a/contact-center/config/sql/upgrade/001.alter_uk_consult_invite.sql b/contact-center/config/sql/upgrade/001.alter_uk_consult_invite.sql new file mode 100644 index 00000000..06f8cf37 --- /dev/null +++ b/contact-center/config/sql/upgrade/001.alter_uk_consult_invite.sql @@ -0,0 +1,3 @@ +-- Enable whitelist for online users +USE `cosinee`; +ALTER TABLE uk_consult_invite add whitelist_mode tinyint(4) DEFAULT '0' COMMENT '启用白名单'; \ No newline at end of file