104 lines
2.8 KiB
Bash
104 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# 使用maven编译打包源码
|
|
image_repo=$1
|
|
project_names=$2
|
|
docker_username=$3 ### 镜像仓库用户名
|
|
docker_password=$4 ### 镜像仓库库用户密码
|
|
version=$5 ### 镜像版本变量
|
|
BUILD_TYPE=$6
|
|
NPM_BUILD_SCRIPT=$7
|
|
registry_url=`echo ${image_repo}|awk -F / '{print $1}'`
|
|
|
|
function build_dockerfile(){
|
|
echo "+++++++++++++++start build dockerfile++++++++++++++++++++++"
|
|
echo "$project_name"
|
|
tar_path=`find . -name "dist.tar.gz"`
|
|
echo "+++++++++++ ${tar_path} +++++++"
|
|
if [ -z "${tar_path}" ];then
|
|
echo "need tar.gz package is not exit"
|
|
exit 222
|
|
fi
|
|
targz=`find . -name "dist.tar.gz"|awk -F / '{print $NF}'`
|
|
#cp -r ${tar_path} .
|
|
cat << EOF > Dockerfile
|
|
## 前端公共镜像
|
|
FROM ccr.ccs.tencentyun.com/tsf_100013631257/tsf-web-public-image:latest
|
|
## 定义变量
|
|
ENV workdir /usr/local/openresty/nginx/
|
|
## 添加代码压缩包到镜像中
|
|
ADD ${targz} \${workdir}/html/
|
|
RUN mv \${workdir}/html/dist/* \${workdir}/html/
|
|
WORKDIR \${workdir}
|
|
|
|
CMD ["sh", "-ec", "sh /root/tsf-consul-template-docker/script/start.sh; exec /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf"]
|
|
EOF
|
|
|
|
}
|
|
|
|
function juge_status( ){
|
|
if [ $? -ne 0 ];then
|
|
echo "$1" "failed"
|
|
exit 111
|
|
fi
|
|
}
|
|
function build_image(){
|
|
echo "+++++++++++++++start build docker image++++++++++++++++++++++"
|
|
echo ${registry_url}
|
|
docker login --username=${docker_username} --password=${docker_password} ${registry_url} && docker build -t ${image_repo}/${project_name}:${version} . && docker push ${image_repo}/${project_name}:${version}
|
|
juge_status build_imag
|
|
}
|
|
|
|
function build() {
|
|
# 编译
|
|
echo "+++++++++++++++start compiler++++++++++++++++++++++"
|
|
echo '安装npm依赖 ===> start'
|
|
# yarn config set registry https://rgnpm.pdcts.com.cn
|
|
# yarn config set sass_binary_site "https://npm.taobao.org/mirrors/node-sass"
|
|
|
|
time yarn install
|
|
echo '安装npm依赖 ===> end'
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo "Failed to yarn install"
|
|
exit -1
|
|
fi
|
|
# 运行编辑+打包命令. 生成dist.tar.gz
|
|
echo '构建前端工程 ===> start'
|
|
# node server 工程打包
|
|
if [ $BUILD_TYPE === 'node' ]; then
|
|
echo "yarn ${NPM_BUILD_SCRIPT}"
|
|
yarn ${NPM_BUILD_SCRIPT}
|
|
mv ./node_modules ./dist/
|
|
echo $(ls ./dist/)
|
|
# 静态文件打包
|
|
elif [ $BUILD_TYPE === 'static' ]; then
|
|
mv html dist
|
|
# - 前端工程打包
|
|
else
|
|
yarn ${NPM_BUILD_SCRIPT}
|
|
echo "yarn ${NPM_BUILD_SCRIPT}"
|
|
fi
|
|
|
|
tar zcfv dist.tar.gz --exclude ./dist/dev.html dist/*
|
|
|
|
|
|
echo '构建前端工程 ===> end'
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to build ${project_name}."
|
|
exit 128
|
|
fi
|
|
}
|
|
|
|
|
|
function execu(){
|
|
arr_service_list=$(echo ${project_names//,/ })
|
|
for service in ${arr_service_list[@]};do
|
|
project_name=$service
|
|
build_dockerfile $service
|
|
build_image
|
|
done
|
|
}
|
|
build
|
|
execu
|