2
0

feat: enhance build and control

This commit is contained in:
wfc
2024-12-19 18:37:39 +08:00
parent adc339bdb8
commit ceab83b189
9 changed files with 134 additions and 62 deletions

View File

@@ -13,12 +13,32 @@ WFCWorkDir=/opt/wfc
BuildDockerDir=${BuildRootDir}/build/docker BuildDockerDir=${BuildRootDir}/build/docker
ReleseDir=${BuildRootDir}/release ReleseDir=${BuildRootDir}/release
TarFileName=${ProjectL}-${RelVersion}-${RelDate}.tar.gz TarFileName=${ProjectL}-${RelVersion}-${RelDate}.tar.gz
TmpDir=${BuildRootDir}/tmp
TmpEnvFile=${TmpDir}/.env.tmp
usage() { usage() {
echo "Usage: sh build.sh [extras|jar|dist|copy|tar|deb|all]" echo "Usage: sh build.sh [extras|jar|dist|copy|tar|deb|all]"
exit 1 exit 1
} }
pre_build_tar(){
if [ ! -d ${ReleseDir}/tars ]; then
mkdir -p ${ReleseDir}/tars
fi
if [ -f ${BuildDockerDir}/.env ]; then
mv -f ${BuildDockerDir}/.env ${TmpEnvFile}
fi
}
pre_build_deb(){
if [ ! -d ${ReleseDir}/debs ]; then
mkdir -p ${ReleseDir}/debs
fi
if [ -f ${BuildDockerDir}/.env ]; then
mv -f ${BuildDockerDir}/.env ${TmpEnvFile}
fi
}
build-extras(){ build-extras(){
cd ${BuildRootDir} cd ${BuildRootDir}
git pull git pull
@@ -51,56 +71,69 @@ copy-file(){
cp -f ${BuildRootDir}/bin/printJarVer.class ${BuildRootDir}/build/bin/ cp -f ${BuildRootDir}/bin/printJarVer.class ${BuildRootDir}/build/bin/
} }
# build tar package # create tar package
build-tar(){ create-tar(){
echo -n "Begin build tar package ... " echo -n "Begin build tar package ... "
cd ${BuildRootDir}/build cd ${BuildRootDir}/build
tar cvfz ${ReleseDir}/tars/${TarFileName} bin docker systemd 1>/dev/null tar cvfz ${ReleseDir}/tars/${TarFileName} \
--exclude='./docker/mysql/logs' \
--exclude='./docker/mysql/data' \
--exclude='./docker/mysql/tmp' \
--exclude='./docker/nacos/logs' \
--exclude='./docker/nginx/logs' \
--exclude='./docker/.env' \
. 1>/dev/null
echo "done" echo "done"
} }
# build deb package # create deb package
build-deb(){ create-deb(){
echo -n "Begin build deb package ... " echo -n "Begin build deb package ... "
echo "done" echo "done"
} }
post_build(){
if [ -f ${TmpEnvFile} ] && [ ! -f ${BuildDockerDir}/.env ]; then
mv -f ${TmpEnvFile} ${BuildDockerDir}/.env
fi
}
case "$1" in case "$1" in
"extras") "extras")
build-extras build-extras
;; ;;
"jar") "jar")
build-jar build-jar
;; ;;
"dist") "dist")
build-dist build-dist
;; ;;
"copy") "copy")
copy-file copy-file
;; ;;
"tar") "tar")
# pre_build_tar
build-extras build-extras
build-jar build-jar
build-dist build-dist
copy-file copy-file
build-tar create-tar
;; # post_build
;;
"deb") "deb")
# pre_build_deb
build-extras build-extras
build-jar build-jar
build-dist build-dist
copy-file copy-file
build-deb create-deb
;; # post_build
;;
"all") "all")
build-extras $0 tar
build-jar $0 deb
build-dist ;;
copy-file
build-tar
build-deb
;;
*) *)
usage usage
;; ;;
esac esac

View File

@@ -54,7 +54,7 @@ case "$1" in
java printJarVer ${Jars} java printJarVer ${Jars}
;; ;;
*) *)
echo "WANFi Controller Service" echo "WANFi Control and Billing Management System Service ... "
echo "Usage: $0 start|stop|restart|status|version" echo "Usage: $0 start|stop|restart|status|version"
exit 1 exit 1
;; ;;

View File

@@ -10,14 +10,21 @@ jar_dockers="wfc-auth wfc-gateway wfc-modules-system wfc-modules-user wfc-module
modules_dockers="wfc-modules-system wfc-modules-user wfc-modules-job wfc-modules-payment" modules_dockers="wfc-modules-system wfc-modules-user wfc-modules-job wfc-modules-payment"
fe_docker=wfc-nginx fe_docker=wfc-nginx
docker_mysql_conf_d=/etc/mysql/conf.d
docker_my_conf_file=${docker_mysql_conf_d}/my.cnf
case "$1" in case "$1" in
env) env)
# prepare directory # prepare directory
mkdir -p ${docker_work_dir}/mysql/tmp mkdir -p ${docker_work_dir}/mysql/tmp
chown -R root:root ${docker_work_dir} chown -R root:root ${docker_work_dir}
chown -R 999:999 ${docker_work_dir}/mysql/data if [ -d ${docker_work_dir}/mysql/data ]; then
chown -R 999:999 ${docker_work_dir}/mysql/data
fi
find ${docker_work_dir} -type d -exec chmod 775 {} \; find ${docker_work_dir} -type d -exec chmod 775 {} \;
find ${docker_work_dir} -type f -exec chmod 664 {} \; find ${docker_work_dir} -type f -exec chmod 664 {} \;
chown root:root ${docker_work_dir}/mysql/conf.d/my.cnf
chmod 600 ${docker_work_dir}/mysql/conf.d/my.cnf
chmod 1777 ${docker_work_dir}/mysql/tmp chmod 1777 ${docker_work_dir}/mysql/tmp
# setup system serivce # setup system serivce
@@ -53,6 +60,23 @@ case "$1" in
mv $tmp_nginx_conf $org_nginx_conf mv $tmp_nginx_conf $org_nginx_conf
fi fi
;; ;;
initdb)
# init database
cd ${docker_work_dir}
docker-compose up -d wfc-mysql
sleep 10
for sql in ${docker_work_dir}/mysql/db/*.sql; do
if [ -f "$sql" ]; then
echo -n "Execute SQL script: ${sql} ... "
docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} < ${sql}
if [ $? = 0 ]; then
echo "done"
fi
else
echo "No SQL files found in ${docker_work_dir}/mysql/db/"
fi
done
;;
base) base)
# build docker compose # build docker compose
cd ${docker_work_dir} cd ${docker_work_dir}
@@ -127,8 +151,8 @@ case "$1" in
esac esac
;; ;;
*) *)
echo "WANFi Controller Setup " echo "WANFi Control and Billing Management System Setup ... "
echo "Usage: $0 env|base|jar|modules|fe|all|rm [base|jar|modules|fe|all]" echo "Usage: $0 env|initdb|base|jar|modules|fe|all|rm [base|jar|modules|fe|all]"
exit 1 exit 1
;; ;;
esac esac

View File

@@ -3,7 +3,9 @@
wfc_work_dir=/opt/wfc wfc_work_dir=/opt/wfc
docker_work_dir=${wfc_work_dir}/docker docker_work_dir=${wfc_work_dir}/docker
mysql_sql_dir=${docker_work_dir}/mysql/db mysql_sql_dir=${docker_work_dir}/mysql/db
docker_mysql_conf=/etc/mysql/conf.d docker_sql_dir=/docker-entrypoint-initdb.d
docker_mysql_conf_d=/etc/mysql/conf.d
docker_my_conf_file=${docker_mysql_conf_d}/my.cnf
case "$1" in case "$1" in
system) system)
@@ -12,7 +14,8 @@ case "$1" in
for sql in ./upgrade/${db_name}/*.sql; do for sql in ./upgrade/${db_name}/*.sql; do
if [ -f "$sql" ]; then if [ -f "$sql" ]; then
echo -n "Execute SQL script: ${sql} ... " echo -n "Execute SQL script: ${sql} ... "
docker exec -i wfc-mysql mysql --defaults-file=${docker_mysql_conf}/.my.cnf ${db_name} < ${sql}; # docker exec -i wfc-mysql mysql -u ${db_name} < ${sql};
docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql}
if [ $? = 0 ]; then if [ $? = 0 ]; then
echo "done" echo "done"
fi fi
@@ -20,14 +23,14 @@ case "$1" in
echo "No SQL files found in ./upgrade/${db_name}/" echo "No SQL files found in ./upgrade/${db_name}/"
fi fi
done done
;; ;;
user) user)
db_name=wfc_user_db db_name=wfc_user_db
cd ${mysql_sql_dir} cd ${mysql_sql_dir}
for sql in ./upgrade/${db_name}/*.sql; do for sql in ./upgrade/${db_name}/*.sql; do
if [ -f "$sql" ]; then if [ -f "$sql" ]; then
echo -n "Execute SQL script: ${sql} ... " echo -n "Execute SQL script: ${sql} ... "
docker exec -i wfc-mysql mysql --defaults-file=${docker_mysql_conf}/.my.cnf ${db_name} < ${sql}; docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql}
if [ $? = 0 ]; then if [ $? = 0 ]; then
echo "done" echo "done"
fi fi
@@ -35,14 +38,14 @@ case "$1" in
echo "No SQL files found in ./upgrade/${db_name}/" echo "No SQL files found in ./upgrade/${db_name}/"
fi fi
done done
;; ;;
config) config)
db_name=wfc_config_db db_name=wfc_config_db
cd ${mysql_sql_dir} cd ${mysql_sql_dir}
for sql in ./upgrade/${db_name}/*.sql; do for sql in ./upgrade/${db_name}/*.sql; do
if [ -f "$sql" ]; then if [ -f "$sql" ]; then
echo -n "Execute SQL script: ${sql} ... " echo -n "Execute SQL script: ${sql} ... "
docker exec -i wfc-mysql mysql --defaults-file=${docker_mysql_conf}/.my.cnf ${db_name} < ${sql} docker exec -i wfc-mysql mysql --defaults-extra-file=${docker_my_conf_file} ${db_name} < ${sql}
if [ $? = 0 ]; then if [ $? = 0 ]; then
echo "done" echo "done"
fi fi
@@ -50,18 +53,15 @@ case "$1" in
echo "No SQL files found in ./upgrade/${db_name}/" echo "No SQL files found in ./upgrade/${db_name}/"
fi fi
done done
;; ;;
all) all)
$0 system $0 system
$0 user $0 user
$0 config $0 config
;; ;;
*) *)
echo "WANFi Controller and Billing System Setup ..." echo "WANFi Control and Billing Management System Upgrade Database ..."
echo "Usage: $0 system|user|config|all" echo "Usage: $0 system|user|config|all"
exit 1 exit 1
;; ;;
esac esac

11
build/docker/.env Normal file
View File

@@ -0,0 +1,11 @@
MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE=wfc_system_db
WFC_CONFIG_DATABASE=wfc_config_db
WFC_SYSTEM_DATABASE=wfc_system_db
WFC_USER_DATABASE=wfc_user_db
MYSQL_USER=mysql
MYSQL_PASSWORD=
NACOS_SERVER_ADDR=192.168.13.128:8848
NACOS_NAME_SPACE=wfc-prod
GATEWAY_ADDR=192.168.13.128:8080
RESTART_OPTION=on-failure:3

View File

@@ -20,7 +20,7 @@ services:
- wfc-be-network - wfc-be-network
depends_on: depends_on:
- wfc-mysql - wfc-mysql
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-mysql: wfc-mysql:
container_name: wfc-mysql container_name: wfc-mysql
image: mysql:5.7 image: mysql:5.7
@@ -33,22 +33,23 @@ services:
- wfc-fe-network - wfc-fe-network
volumes: volumes:
- ./mysql/db:/docker-entrypoint-initdb.d - ./mysql/db:/docker-entrypoint-initdb.d
- ./mysql/conf:/etc/mysql/conf.d - ./mysql/conf.d:/etc/mysql/conf.d
- ./mysql/logs:/logs - ./mysql/logs:/logs
- ./mysql/data:/var/lib/mysql - ./mysql/data:/var/lib/mysql
- ./mysql/tmp:/tmp - ./mysql/tmp:/tmp
command: [ # command: [
'mysqld', # 'mysqld',
'--innodb-buffer-pool-size=80M', # '--defaults-extra-file=/etc/mysql/conf.d/my.cnf',
'--character-set-server=utf8mb4', # '--innodb-buffer-pool-size=80M',
'--collation-server=utf8mb4_unicode_ci', # '--character-set-server=utf8mb4',
'--default-time-zone=+8:00', # '--collation-server=utf8mb4_unicode_ci',
'--lower-case-table-names=1' # '--default-time-zone=+8:00',
] # '--lower-case-table-names=1'
# ]
environment: environment:
MYSQL_DATABASE: 'wfc_system_db' MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: 123456 MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-redis: wfc-redis:
container_name: wfc-redis container_name: wfc-redis
image: redis image: redis
@@ -62,7 +63,7 @@ services:
- ./redis/conf/redis.conf:/home/wfc/redis/redis.conf - ./redis/conf/redis.conf:/home/wfc/redis/redis.conf
- ./redis/data:/data - ./redis/data:/data
command: redis-server /home/wfc/redis/redis.conf command: redis-server /home/wfc/redis/redis.conf
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-gateway: wfc-gateway:
container_name: wfc-gateway container_name: wfc-gateway
build: build:
@@ -82,7 +83,7 @@ services:
environment: environment:
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR} - NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
- NACOS_NAME_SPACE=${NACOS_NAME_SPACE} - NACOS_NAME_SPACE=${NACOS_NAME_SPACE}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-auth: wfc-auth:
container_name: wfc-auth container_name: wfc-auth
build: build:
@@ -101,7 +102,7 @@ services:
environment: environment:
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR} - NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
- NACOS_NAME_SPACE=${NACOS_NAME_SPACE} - NACOS_NAME_SPACE=${NACOS_NAME_SPACE}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-modules-system: wfc-modules-system:
container_name: wfc-modules-system container_name: wfc-modules-system
build: build:
@@ -122,7 +123,7 @@ services:
environment: environment:
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR} - NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
- NACOS_NAME_SPACE=${NACOS_NAME_SPACE} - NACOS_NAME_SPACE=${NACOS_NAME_SPACE}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-modules-user: wfc-modules-user:
container_name: wfc-modules-user container_name: wfc-modules-user
build: build:
@@ -143,7 +144,7 @@ services:
environment: environment:
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR} - NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
- NACOS_NAME_SPACE=${NACOS_NAME_SPACE} - NACOS_NAME_SPACE=${NACOS_NAME_SPACE}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-modules-job: wfc-modules-job:
container_name: wfc-modules-job container_name: wfc-modules-job
build: build:
@@ -162,7 +163,7 @@ services:
environment: environment:
- NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR} - NACOS_SERVER_ADDR=${NACOS_SERVER_ADDR}
- NACOS_NAME_SPACE=${NACOS_NAME_SPACE} - NACOS_NAME_SPACE=${NACOS_NAME_SPACE}
restart: unless-stopped restart: ${RESTART_OPTION}
wfc-modules-payment: wfc-modules-payment:
container_name: wfc-modules-payment container_name: wfc-modules-payment
build: build:
@@ -202,7 +203,7 @@ services:
- wfc-gateway - wfc-gateway
environment: environment:
- GATEWAY_ADDR=${GATEWAY_ADDR} - GATEWAY_ADDR=${GATEWAY_ADDR}
restart: unless-stopped restart: ${RESTART_OPTION}
networks: networks:
wfc-fe-network: wfc-fe-network:

View File

@@ -0,0 +1,3 @@
[client]
user=root
password=123456

View File

@@ -4,8 +4,8 @@ FROM mysql:5.7
MAINTAINER wfc MAINTAINER wfc
# 执行sql脚本 # 执行sql脚本
ENV MYSQL_ROOT_PASSWORD=123456 # ENV MYSQL_ROOT_PASSWORD=123456
COPY ./db/*.sql /docker-entrypoint-initdb.d/ # COPY ./db/*.sql /docker-entrypoint-initdb.d/
# COPY ./db/initdb.sh /docker-entrypoint-initdb.d/ # COPY ./db/initdb.sh /docker-entrypoint-initdb.d/
# RUN chmod 755 /docker-entrypoint-initdb.d/initdb.sh # RUN chmod 755 /docker-entrypoint-initdb.d/initdb.sh
# ENTRYPOINT ["bash", "/docker-entrypoint-initdb.d/initdb.sh"] # ENTRYPOINT ["bash", "/docker-entrypoint-initdb.d/initdb.sh"]

View File

@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=WANFi Control and Billing System Description=WANFi Control and Billing Management System
After=network.target docker.service After=network.target docker.service
Requires=network.target docker.service Requires=network.target docker.service