一、前提条件:
机器上已经安装了docker(安装过程)准备部署的springboot的jar包Dockerfile文件部署脚本deploy.sh升级脚本upgrade.sh二、准备Dockerfile文件
创建一个Dockerfile(在宿主机器任意位置)内容如下:vi Dokckerfile
FROM java:8
ADDspringboot-webser-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+8","-jar","-jar","/app.jar"]
EXPOSE 18103
解释:
java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。ADD/COPY 将项目的jar文件作为app.jar添加到容器RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。EXPOSE 容器暴露端口ENTRYPOINT 应用启动命令 参数设定
三、部署脚本deploy.sh
#!/bin/sh
cur_dir=$(cd `dirname $0`; pwd)
ip=$1
export ip
cd ${cur_dir}
docker build -t fm-webser .
cd ${cur_dir}
echo "启动fm-webser容器"
docker run -itd \
--net host \
--name fm-webser \
-v ${cur_dir}/log:/fm-webser \
--restart always fm-webser
docker exec -ti fm-webser ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
解释说明:
run: 容器启动命令--name boot-docker 自定义容器命名-d 程序后台启动-v /opt/jar/boot-docker/logs:/log 应用日志 数据卷的方式存储-p 8000:8000 用主机8000端口映射容器端口boot-docker 镜像名称
四、升级脚本upgrade.sh
#!/bin/sh
basedir=$(cd `dirname $0`; pwd)
docker cp ${basedir}/oss-fm-webser-0.0.1-SNAPSHOT.jar fm-webser:/app.jar
echo "cp oss-fm-webser.jar success"
docker restart fm-webser
echo "restart fm-webser docker success"
五、整合wagon-ssh插件
pom增加依赖:
<build> <extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.10</version></extension></extensions><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile><overwrite>true</overwrite><verbose>true</verbose></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version><configuration><fromFile>target/alarm-collection-0.0.1-SNAPSHOT.jar</fromFile><url>scp://root:fa9f4f99-bfc2-4aaa-a151-a89737e6abeb@10.21.70.99/home/docker/alarm-collection</url><commands><command>sh /home/docker/alarm-collection/upgrade.sh</command></commands><displayCommandOutputs>true</displayCommandOutputs></configuration></plugin></plugins></build>
新增maven配置项: clean package wagon:upload-single wagon:sshexec