Jenkins+Svn+Docker搭建持续集成环境 自动部署(单机子脚本文件)
1、docker_build.sh
#!/bin/bash RUNENV=$1 MODULE=$2 VERSION=$3 echo "环境: ${RUNENV}" # 镜像名称 IMAGE_NAME="${MODULE}:${VERSION}" echo $IMAGE_NAME >> IMAGE_NAME echo "update image to: ${IMAGE_NAME}" # 停止容器 docker stop ${MODULE} # 删除容器 docker rm ${MODULE} # 减少磁盘空间 删除镜像 docker rmi -f $(docker images | grep ${MODULE}) # 重新构建镜像 docker build --build-arg RUNENV=${RUNENV} -t ${IMAGE_NAME} .
2、Dockerfile
FROM airdock/oraclejdk MAINTAINER han 1445496485@qq.com ARG RUNENV=${RUNENV} ENV RUNENV=${RUNENV} ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN mkdir -p /var/yjz/demo \ echo ${RUNENV} > /tmp.properties COPY target/demo.jar /var/yjz/demo/app.jar WORKDIR /var/yjz/demo ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=${RUNENV}"] # EXPOSE命令只是声明了容器应该打开的端口并没有实际上将它打开! # 我们声明了EXPOSE端口之后,我们使用-P命令进行随机映射的时候,是会对这个端口进行映射的。 # 比如说我们现在对一个tomcat容器进行EXPOSE 9999声明,那么我们进行-P随机映射的时候是会对9999端口进行映射的。 EXPOSE 8063:8063
3、start.sh
#!/bin/bash PORT=$1 MODULE=$2 VERSION=$3 IMAGE_NAME="${MODULE}:${VERSION}" echo "目录:" $(pwd) echo "模块:" ${MODULE} echo "端口:" ${PORT} ./docker_deploy.sh ${PORT} ${IMAGE_NAME} ${MODULE}
4、docker_deploy.sh
#!/bin/bash PORT=$1 IMAGE=$2 MODULE=$3 docker run -d -p ${PORT}:8070 -v /home/logs:/home/logs --name ${MODULE} ${IMAGE}