一、前提条件: 

  1. 机器上已经安装了docker(安装过程)
  2. 准备部署的springboot的jar包
  3. Dockerfile文件
  4. 部署脚本deploy.sh
  5. 升级脚本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

Docker容器整合wagon-ssh自动化部署SpringBoot工程相关推荐

  1. Docker + GitLab CI/CD 实现自动化部署

    使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...

  2. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  3. (三)jenkins+bonobo git server+windows系统自动化部署springboot项目(远程windows自动化部署)

    前提 jenkins安装,参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 自动化部署,参考:(二)jenki ...

  4. (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)

    前提:jenkins安装 参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 1插件下载 主要是检查如下插件是否 ...

  5. Jenkins结合Gitee(码云)自动化部署Springboot项目(比较详细)

    Jenkins结合码云自动化部署Springboot项目 一.准备工作(有的话,可以忽略) 1. 安装wget 2. 安装jdk 3. 安装maven 4. 安装git 二.开始部署 (jenkins ...

  6. 利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

    背景: 最近想部署一个springboot项目到阿里云服务器里面.捣鼓了很久,构建了很多次,都失败了!实在是一脸辛酸,有点气馁~ 在此想记录一下构建的过程. 不了解Jenkins之前,觉得Jenkin ...

  7. 云服务器部署SpringBoot工程-瑞吉外卖项目

    Linux部署SpringBoot工程-瑞吉外卖项目 云平台:阿里云 终端软件:Tabby Terminal 部署项目项目: SpringBoot-瑞吉外卖 自己第一次从本地web项目搭建到云端部署发 ...

  8. [由零开始] 容器虚拟化技术和自动化部署-Docker

    伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中. 部署.交付.运行 传统来看,虚拟化(vm)既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则 更为优雅,它充分利 ...

  9. docker镜像原理基础与dockerfile部署springboot项目

    一.docker镜像原理 1.操作系统组成部分 进程调度子系统 进程通信子系统 内存管理子系统 设备管理子系统 文件管理子系统 网络通信子系统 作业控制子系统 Linux文件系统由bootfs和roo ...

最新文章

  1. python批量读取文件内容_Python 文本文件内容批量抽取实例
  2. 通过电脑给继电器发送指令_三菱FX PLC学习之通信指令(上)
  3. jquery 判断是否有类名_Day037-JS、jQuery
  4. wps完成率怎么设置_WPS表格中如何计算完成率?详细操作方法看这里!
  5. c语言百文百鸡问题答案,python_百文买百鸡问题
  6. mysql mariadb不能启动原因_MySQL(MariaDB)无法启动
  7. HDU 4280 Island Transport(HLPP板子)题解
  8. 仿探探交友小程序V7.0.2 完整安装包+小程序前端
  9. 29-基于单片机的防盗报警系统仿真
  10. TIA protal与SCL从入门到精通(2)——EN/ENO 机制
  11. Android开发-API指南-uses-feature(1)
  12. 安卓开发者必备的5款App:终端模拟器、颜色萃取、移动IDE等
  13. word文档中的毕业论文的页眉与页脚设置
  14. 文本文档写html图片显示不出来,word文档几种不显示图片的解决方法
  15. Lattice Mico8在LMS上中断错误问题
  16. Symtavision—分布式嵌入式系统时间建模分析和验证工具
  17. 使用Onekey Ghost安装器一键还原系统的方法
  18. 对称排序 nyoj 283
  19. 计算机科学上课带电脑,985 高校计算机系学生都在用的笔记本,我被深深地种草了!...
  20. Ubuntu安装adobe flash player插件(PPAPI和NPAPI)

热门文章

  1. Java 垃圾回收机制与几种垃圾回收算法
  2. python实现多语言语种识别_python langid实现语种识别
  3. iOS14-桌面小插件 StaticConfiguration
  4. 为什么要使用openstry_什么是配线架?为什么要使用配线架?
  5. 苹果手机怎么多开微信 苹果微信双开分身教程
  6. 计算机主板跳线怎么放电,主板电池放电清BIOS恢复出厂设置怎么操作?图文教程...
  7. 扒一扒那些叫欧拉的定理们(十)——群论观点下的欧拉公式进阶
  8. Java内存马简单实现
  9. 最新互联网大厂的薪资和职级一览
  10. Matlab中的复数运算函数