Dockerfile
FROM jdk8_image:V1.0MAINTAINER liuyang "123@q.c"ENV TimeZone=Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone# 定义传入的参数ARG portARG proj_direARG jar_nameENV proj_dire_env $proj_direENV jar_name_env $jar_name# 工作目录WORKDIR $proj_dire# 对外暴露端口EXPOSE $port# 将jar添加到容器ADD $jar_name $jar_name# 启动命令ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -jar ${proj_dire_env}/${jar_name_env}# 启动环境CMD ["--server.port=${port}"]
build.sh
# jar存放目录
projDire=/home/jar_file/$1
# 代码目录,如果是-project,需要进入-app子目录
echo "result:${result}"
result=$(echo $1 | grep "project")
if [[ "$result" != "" ]]
then
dire=/var/jenkins_home/workspace/sc-cloud/$1/${1/project/app}
else
dire=/var/jenkins_home/workspace/sc-cloud/$1
fi
echo "dire目录:${dire}"
# 编译打包
cd $dire
mvn clean install -Dmaven.test.skip=true
# 复制jar文件
mkdir -p $projDire
cd $projDire
jarName=`ls *.jar`
rm -f *.jar
cp $dire/target/*.jar $projDire
#删除原镜像
docker stop $1
docker rm $1
docker rmi $1
# 运行
docker build -f /home/jar_file/Dockerfile -t $1:latest . --build-arg port=$2 --build-arg proj_dire=$projDire --build-arg jar_name=$jarName
docker run --name=$1 -e port=$port -e proj_dire=$projDire -e jar_name=$jarName -p $2:$2 -d -it $1
docker start $1
构建shell
#!/bin/bash
# 定义端口
port=8080
case $module in
blade-auth) port=8010;;
blade-gateway) port=8020;;
system-service-project) port=8030;;
mobile-service-project) port=8040;;
*) port=8080;;
esac
cd /var/jenkins_home/workspace/sc-cloud
bash build.sh $module $port
