构建镜像脚本
#!/bin/bash app_name=registry.ap-southeast-1.aliyuncs.com/tl/mall _version=$1 #add by dk 相当于三目运算,如果$1没有值得话则取latest有值的话则取自己 app_version=${_version:-latest} docker_name=${app_name}:${app_version} # 更新代码 git pull # 编译打包 mvn clean install -DskipTests # 判断上一个命令执行是否成功,成功0,失败0 mvn_success=$? if [[ mvn_success -ne '0' ]] ; then echo '代码编译打包失败!'; exit fi echo '代码编译打包完成!' # 删除原镜像 docker rmi $docker_name rmidocker=$? if [ ${rmidocker} == '0' ] then echo "删除镜像成功" else echo "删除镜像失败" fi # 制作镜像 docker build -t $docker_name . builddocker=$? if [ ${builddocker} == '0' ] then echo "制作镜像成功" else echo "制作镜像失败" fi # 上传私库 docker push $docker_name pushimage=$? if [ ${pushimage} == '0' ] then echo "上传私库成功" else echo "上传私库失败" fi
运行镜像脚本
#!/bin/bash app_name=tl-mall _version=$1 app_version=${_version:-latest} docker_name=registry.ap-southeast-1.aliyuncs.com/mall/account:${app_version} _env=$2 env=${_env:-dev} # 停止容器 docker stop $app_name stopapp=$? if [ ${stopapp} == '0' ] then echo "停止容器成功" else echo "停止容器失败" fi # 删除容器 docker rm $app_name rmapp=$? if [ ${rmapp} == '0' ] then echo "删除容器成功" else echo "删除容器失败" fi # 更新镜像 docker pull $docker_name pullimage=$? if [ ${pullimage} == '0' ] then echo "更新镜像成功" else echo "更新镜像失败" fi # 启动 docker run -d --name=$app_name --network host -p 9002:9002 -v /home/oper/logs/:/home/oper/logs/ $docker_name -g "--spring.profiles.active=${env}" startapp=$? if [ ${startapp} == '0' ] then echo "应用启动成功" else echo "应用启动失败" fi # 进入容器 # docker exec -it $app_name /bin/bash # 打印日志 docker logs -f $app_name # 复制日志 # docker cp mall:/app/logs/debug.log ~/
dockerfile
# 指定基础镜像,必须为第一个命令 FROM openjdk:8-jre-slim # 维护者信息 MAINTAINER dk <mr.dk@qq.com> # 工作目录, WORKDIR /app # 添加 jar ADD ./tl-mall-service/target/*.jar app.jar VOLUME /home/oper/logs/ # 外部端口 EXPOSE 8002 # 启动 ENTRYPOINT java -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -jar app.jar