-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-init-oracle.sh
162 lines (149 loc) · 9.04 KB
/
build-init-oracle.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#! /bin/bash
#=====================================================================================================
#
#修改以下环境变量适合你的环境,其中:
#
# PROCUCT_NAME EI业务融合服务器的产品名称。用来生成镜像名称和可独立部署的安装包的文件名
# PROCUCT_VERSION EI业务融合服务器的版本。用来生成镜像版本和可独立部署的安装包的文件名
# EI_HOST_PORT EI业务融合服务器的机器的主服务端口 用来生成提示信息
# EI_PORTS_OFFSET EI业务融合服务器的机器的端口偏移量,默认是0,控制台默认端口是9443,若偏移量设为1 ,则控制台端口是“默认端口+偏移量”,也就是9444. EI的其它端口也会一起偏移
#
# DB_HOST EI身份管理服务器的主数据库Oracle的主机地址,如:192.168.3.49
# DB_PORT EI身份管理服务器的主数据库Oracle的端口,如:1521
# DB_SID EI身份管理服务器的主数据库Oracle的SID,如:kyy
# DB_USERNAME EI身份管理服务器的主数据库Oracle的用户名
# DB_PASSWORD EI身份管理服务器的主数据库Oracle的密码
# DATASOURCE_NAME EI身份管理服务器的主数据库库名称
#
# CARBON_UI_CUSTOM_EI_BRANCH EI管理控制台个性化定制项目的分支名称,缺省是master
#======================================================================================================
PROCUCT_NAME=${PROCUCT_NAME:-wso2ei}
PROCUCT_VERSION=${PROCUCT_VERSION:-6.4.0}
EI_HOST_NAME=${EI_HOST_NAME:-ei.cd.mtn}
EI_HOST_PORT=${EI_HOST_PORT:-9143}
EI_PORTS_OFFSET=${EI_PORTS_OFFSET:-0}
CARBON_UI_CUSTOM_EI_BRANCH=${CARBON_UI_CUSTOM_EI_BRANCH:-master}
#oracle数据库参数
DB_HOST=${DB_HOST:-192.168.3.49}
DB_PORT=${DB_PORT:-1521}
DB_SID=${DB_SID:-kyy}
DB_USERNAME=${DB_USERNAME:-wso2ei}
DB_PASSWORD=${DB_PASSWORD:-a1b2c3}
DATASOURCE_NAME=${DATASOURCE_NAME:-WSO2CarbonDB}
#======================================================================================================
echo "===================环境变量==================================="
echo PROCUCT_NAME=$PROCUCT_NAME
echo PROCUCT_VERSION=$PROCUCT_VERSION
echo EI_HOST_NAME=$EI_HOST_NAME
echo EI_HOST_PORT=$EI_HOST_PORT
echo CARBON_UI_CUSTOM_EI_BRANCH=$CARBON_UI_CUSTOM_EI_BRANCH
echo DB_HOST=$DB_HOST
echo DB_PORT=$DB_PORT
echo DB_SID=$DB_SID
echo DB_USERNAME=$DB_USERNAME
echo DB_PASSWORD=$DB_PASSWORD
echo DATASOURCE_NAME=$DATASOURCE_NAME
echo "注意:执行脚本之前可以提前设置好以上环境变量"
echo "============================================================"
#======================================================================================================
CUR_DIR=$PWD
if [ ! -d "$PWD/docker-ei" ]; then
git clone -b gdsmaster https://github.com/tongpi/docker-ei.git
fi
EI_HOME=$PWD/docker-ei/dockerfiles/ubuntu/integrator/files/$PROCUCT_NAME-$PROCUCT_VERSION
if [ -d $EI_HOME ]; then
rm -Rf $EI_HOME
fi
PROCUCT_RELEASE_ZIP_FILE=$PROCUCT_NAME-$PROCUCT_VERSION.zip
if [ ! -f "$PROCUCT_RELEASE_ZIP_FILE" ]; then
# wget $PROCUCT_RELEASE_ZIP_FILE
echo "================================================================================================="
echo "用法:"
echo "请首先复制从ES源码库( https://github.com/tongpi/product-ei.git )构建出来的$PROCUCT_RELEASE_ZIP_FILE到$0所在目录下"
echo "================================================================================================="
exit 1
fi
if [ ! type unzip > /dev/null 2>&1 ]; then
echo "正在安装zip软件包"
sodo apt-get install -y zip > /dev/null
fi
rm -rf $PWD/docker-ei/dockerfiles/ubuntu/integrator/files/*
unzip $PROCUCT_RELEASE_ZIP_FILE -d $PWD/docker-ei/dockerfiles/ubuntu/integrator/files > /dev/null 2>&1
echo '已解压缩$PROCUCT_RELEASE_ZIP_FILE到$PWD/docker-ei/dockerfiles/ubuntu/integrator/files目录下'
cp -r ./lib $PWD/docker-ei/dockerfiles/ubuntu/integrator/files
echo "已复制ei 的相关的包到$PWD/docker-ei/dockerfiles/ubuntu/integrator/files目录下"
# 这一步是给docker build准备的
cp ./jdbc-drivers/*.jar $PWD/docker-ei/dockerfiles/ubuntu/integrator/files
#这一步仅仅为了单独部署而准备,对build docker image来说不是必需的
cp ./jdbc-drivers/*.jar $EI_HOME/lib
echo "已复制数据库jdbc驱动到$PWD/docker-ei/dockerfiles/ubuntu/integrator/files目录下"
#======================================================================================================
echo "开始进行EI管理控制台个性化定制组件的安装工作"
if [ ! -d "$PWD/carbon-ui-custom-ei" ]; then
git clone -b $CARBON_UI_CUSTOM_EI_BRANCH https://github.com/tongpi/carbon-ui-custom-ei.git
else
rm -Rf $PWD/carbon-ui-custom-ei
git clone -b $CARBON_UI_CUSTOM_EI_BRANCH https://github.com/tongpi/carbon-ui-custom-ei.git
fi
cd carbon-ui-custom-ei
mvn clean install > /dev/null
cp modules/org.wso2.carbon.ui_fragment/target/org.wso2.carbon.ui_4.4.36_fragment-1.0.0.jar ../docker-ei/dockerfiles/ubuntu/integrator/files/$PROCUCT_NAME-$PROCUCT_VERSION/dropins/
cp modules/org.wso2.carbon.ui_patch/target/org.wso2.carbon.ui_4.4.36_patch-1.0.0.jar ../docker-ei/dockerfiles/ubuntu/integrator/files/$PROCUCT_NAME-$PROCUCT_VERSION/dropins/
cd $CUR_DIR
#======================================================================================================
chmod +x ./scripts/*.sh
# 自动配置及文件编码转换工作
./scripts/ei_auto_config.sh $EI_HOME $EI_PORTS_OFFSET
# 自动配置数据库文件
./scripts/ei_auto_config_oracle.sh $EI_HOME $DB_HOST $DB_PORT $DB_SID $DB_USERNAME $DB_PASSWORD $DATASOURCE_NAME
#======================================================================================================
echo "检查容器是否存在,若存在,就先删除"
DOCKER_CONTAINER_NAME=$EI_HOST_NAME
if [ ! "$(docker ps -q -f name=$DOCKER_CONTAINER_NAME)" ]; then
if [ "$(docker ps -aq -f status=exited -f name=$DOCKER_CONTAINER_NAME)" ]; then
sudo docker rm $DOCKER_CONTAINER_NAME
fi
else
sudo docker stop $DOCKER_CONTAINER_NAME
sudo docker rm $DOCKER_CONTAINER_NAME
fi
#======================================================================================================
cd $PWD/docker-ei/dockerfiles/ubuntu/integrator
echo "开始构建之前先删除旧的本地EI镜像"
echo "sudo docker rmi $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION"
sudo docker rmi $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION
echo "开始构建新的EI的docker镜像......"
echo "--------------------------------------------------------------------------------------------------"
echo "docker build -t $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION ."
sudo docker build -t $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION .
cd $CUR_DIR
# 生成可单独部署的wos2ei产品包到$PWD/target/目录下
if [ ! -d "$PWD/target" ]; then
mkdir target
else
rm -Rf $PWD/target
mkdir target
fi
# 生成用于在系统单独部署的zip包
cd $PWD/docker-ei/dockerfiles/ubuntu/integrator/files
echo "导出EI单独部署的zip包到$CUR_DIR/target目录下"
zip -r $CUR_DIR/target/$PROCUCT_NAME-$PROCUCT_VERSION-oracle.zip ./$PROCUCT_NAME-$PROCUCT_VERSION > /dev/null
cd $CUR_DIR
#导出镜像文件以便迁移到其它docker环境中
echo "导出EI镜像到$PWD/target目录下"
sudo docker save -o $PWD/target/$PROCUCT_NAME:$PROCUCT_VERSION-oracle.tar $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION
echo "重新创建容器$DOCKER_CONTAINER_NAME"
sudo docker run -d --hostname $EI_HOST_NAME --name $DOCKER_CONTAINER_NAME --restart=always -p $EI_HOST_PORT:9443 $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION
echo "========================================================================================================================="
echo "提示 1:"
echo "EI的本地镜像版本已生成 TAG为:$CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION"
echo "你可以复制$PWD/target/$PROCUCT_NAME-$PROCUCT_VERSION-oracle.tar文件到光盘以便迁移到其它docker环境中"
echo "你也可以直接在本机执行如下的docker命令来启动EI:"
echo " docker run -d --hostname $EI_HOST_NAME --restart=always -p $EI_HOST_PORT:9443 -it $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION"
echo " docker run -d --hostname $EI_HOST_NAME --name $DOCKER_CONTAINER_NAME --restart=always -p $EI_HOST_PORT:9443 -it $CARBON_UI_CUSTOM_EI_BRANCH/$PROCUCT_NAME-oracle:$PROCUCT_VERSION"
echo "提示 2:"
echo "已生成能够在单独部署的wso2ei版本到$PWD/target/目录下的$PROCUCT_NAME-$PROCUCT_VERSION-oracle.zip文件中"
echo "你可以直接复制该文件来独立安装已按产品化要求配置好的EI运行版"
echo "提示 3:"
echo "EI服务启动完成后,你可以通过类似下面的地址访问EI的管理控制台:"
echo " https://$EI_HOST_NAME:$EI_HOST_PORT/carbon"