一、前提条件:
- 机器上已经安装了docker(安装过程)
- 准备部署的springboot的jar包
- Dockerfile文件
- 部署脚本deploy.sh
- 升级脚本upgrade.sh
二、准备Dockerfile 文件
创建一个Dockerfile(在宿主机器任意位置)内容如下: vi Dokckerfile
FROM java:8
ADD springboot-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
![](https://img-blog.csdnimg.cn/2021010710594694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlua3VhbjMyOA==,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)