Docker容器整合wagon-ssh自动化部署SpringBoot工程
一、前提条件:
- 机器上已经安装了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
Docker容器整合wagon-ssh自动化部署SpringBoot工程相关推荐
- Docker + GitLab CI/CD 实现自动化部署
使用Docker+gitlab ci/cd 实现自动化部署 文章目录 使用Docker+gitlab ci/cd 实现自动化部署 1. Docker 1.1 Docker是什么? 1.2 Docker ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
- (三)jenkins+bonobo git server+windows系统自动化部署springboot项目(远程windows自动化部署)
前提 jenkins安装,参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 自动化部署,参考:(二)jenki ...
- (二)jenkins+bonobo git server+windows系统自动化部署springboot项目(自动化部署)
前提:jenkins安装 参考:(一)jenkins+bonobo git server+windows系统自动化部署springboot项目(jenkins安装) 1插件下载 主要是检查如下插件是否 ...
- Jenkins结合Gitee(码云)自动化部署Springboot项目(比较详细)
Jenkins结合码云自动化部署Springboot项目 一.准备工作(有的话,可以忽略) 1. 安装wget 2. 安装jdk 3. 安装maven 4. 安装git 二.开始部署 (jenkins ...
- 利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)
背景: 最近想部署一个springboot项目到阿里云服务器里面.捣鼓了很久,构建了很多次,都失败了!实在是一脸辛酸,有点气馁~ 在此想记录一下构建的过程. 不了解Jenkins之前,觉得Jenkin ...
- 云服务器部署SpringBoot工程-瑞吉外卖项目
Linux部署SpringBoot工程-瑞吉外卖项目 云平台:阿里云 终端软件:Tabby Terminal 部署项目项目: SpringBoot-瑞吉外卖 自己第一次从本地web项目搭建到云端部署发 ...
- [由零开始] 容器虚拟化技术和自动化部署-Docker
伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中. 部署.交付.运行 传统来看,虚拟化(vm)既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则 更为优雅,它充分利 ...
- docker镜像原理基础与dockerfile部署springboot项目
一.docker镜像原理 1.操作系统组成部分 进程调度子系统 进程通信子系统 内存管理子系统 设备管理子系统 文件管理子系统 网络通信子系统 作业控制子系统 Linux文件系统由bootfs和roo ...
最新文章
- python批量读取文件内容_Python 文本文件内容批量抽取实例
- 通过电脑给继电器发送指令_三菱FX PLC学习之通信指令(上)
- jquery 判断是否有类名_Day037-JS、jQuery
- wps完成率怎么设置_WPS表格中如何计算完成率?详细操作方法看这里!
- c语言百文百鸡问题答案,python_百文买百鸡问题
- mysql mariadb不能启动原因_MySQL(MariaDB)无法启动
- HDU 4280 Island Transport(HLPP板子)题解
- 仿探探交友小程序V7.0.2 完整安装包+小程序前端
- 29-基于单片机的防盗报警系统仿真
- TIA protal与SCL从入门到精通(2)——EN/ENO 机制
- Android开发-API指南-uses-feature(1)
- 安卓开发者必备的5款App:终端模拟器、颜色萃取、移动IDE等
- word文档中的毕业论文的页眉与页脚设置
- 文本文档写html图片显示不出来,word文档几种不显示图片的解决方法
- Lattice Mico8在LMS上中断错误问题
- Symtavision—分布式嵌入式系统时间建模分析和验证工具
- 使用Onekey Ghost安装器一键还原系统的方法
- 对称排序 nyoj 283
- 计算机科学上课带电脑,985 高校计算机系学生都在用的笔记本,我被深深地种草了!...
- Ubuntu安装adobe flash player插件(PPAPI和NPAPI)