Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十六):容器部署项目
容器部署项目
这一章我们引入docker,采用docker容器的方式部署我们的项目。
首先需要有一个linux环境,并且安装 java 和 maven 以及 docker 环境,这个教程多如牛毛,不再赘述。
这里以 kitty-monitor 为例。
添加配置
在 pom.xml 的 properties 中添加 Docker 镜像名称。
<properties>
<docker.image.prefix>kitty</docker.image.prefix>
</properties>
在 plugins 中添加 Docker 构建插件配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
在目录src/main/docker下创建 Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。
FROM openjdk:-jdk-alpine
VOLUME /tmp
ADD kitty-monitor-1.0.0jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:
- FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
- VOLUME ,VOLUME 指向了一个
/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录 - ADD ,拷贝文件并且重命名
- ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加
java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
上传项目
将项目 kitty-monitor 拷贝服务器中,如我这里上传到 /usr/kitty/ 目录下

打包测试
进入项目根路径,执行以下命令进行打包。
#打包
mvn package
编译成功

编译成功之后,查看 target 目录下面正常生成了 jar 包。

执行以下命令启动应用。
#启动
java -jar target/kitty-monitor-1.0..jar
启动过程。

启动成功之后访问 服务器:端口号 ,出现如下界面。

构建Docker镜像
执行以下命令,构建docker镜像。
mvn package docker:build
出现如下界面就说明镜像构建成功了。

通过命令查看构建好的镜像。
docker images
我们看到的 kitty/kitty-monitor 就是我们构建好的镜像。

执行以下命令启动一个docker容器。
docker run -p : -d kitty/kitty-monitor
说明:
-p 8000:8000 将主机端口映射到容器端口
-d 启用后台进程运行程序
通过以下命令,可以查看运行中的容器。
docker ps

启动成功之后,访问 主机:端口号访问监控服务页面,显示正常。

应用启动关闭
启动应用
java -jar XXX.jar #前台启动,退出命令行服务就停止了
java -jar xxx.jar & #后台启动,终端退出后仍继续运行
java -jar xxx.jar > catalina.out >& & #重定向控制台输出到日志文件
说明:
catalina.out将标准输出指向制定文件catalina.out文件,可以自定义文件名称。
2>&1 输出所有的日志文件
& 表示后台启动程序
查杀应用
ps -ef|grep 'java -jar' #查看运行中的进程
jobs #查看后台任务
kill %num #通过jobs命令查看job号(假设为num),然后执行kill %num
kill pid #通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
代码重构
为了方便利用docker部署,这里对代码进行一些重构。
将kityy-pom, kitty-boot工程的内容合并到kitty-admin, 合并之后删除。
重构之后,代码结构如下图所示。

重构之后,同理将备份服务和权限管理系统服务使用docker部署。

源码下载
后端:https://gitee.com/liuge1988/kitty
前端:https://gitee.com/liuge1988/kitty-ui.git
作者:朝雨忆轻尘
出处:https://www.cnblogs.com/xifengxiaoma/
版权所有,欢迎转载,转载请注明原文作者及出处。
Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十六):容器部署项目的更多相关文章
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(六):集成 Swagger API
spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端.在 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十五):Spring Security 版本
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 到目前为止,我们使用的权限认证框架是 Shiro,虽然 Shiro ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(一):Kitty 系统介绍
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 温馨提示: 有在演示环境删除数据的童鞋们,如果可以的话,麻烦动动小指,右键头像 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十三):配置中心(Config、Bus)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十):服务熔断(Hystrix、Turbine)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 雪崩效应 在微服务架构中,由于服务众多,通常会涉及多个服务层级的调用,而一旦基 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十九):服务消费(Ribbon、Feign)
技术背景 上一篇教程中,我们利用Consul注册中心,实现了服务的注册和发现功能,这一篇我们来聊聊服务的调用.单体应用中,代码可以直接依赖,在代码中直接调用即可,但在微服务架构是分布式架构,服务都运行 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):注册中心(Spring Cloud Consul)
什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十四):权限控制(Shiro 注解)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 当前,我们基于导航菜单的显示和操作按钮的禁用状态,实现了页面可见性和 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十五):系统服务监控
系统服务监控 新建监控工程 新建Spring Boot项目,取名 kitty-monitor,结构如下. 添加项目依赖 添加 spring boot admin 的相关依赖. pom.xml < ...
随机推荐
- Yii2.0关闭自带的debug功能
1.找到相应模块的config文件夹的main-local.php文件注释相关代码,如下: 2.将web下面的两个入口文件改成false index.php index-test.php
- stark组件开发之列表页面自定义函数扩展
对于展示页面, 可能需要显示一些. 数据库中,没有的字段. 比如, 删除按钮, 编辑按钮. 这个数据库,是没有的. 所以,可能就需要, 添加一个这个东西. 比如我在渲染的时候, 给他添加两个函数进 ...
- js data日期初始化的5种方法
var objDate=new Date([arguments list]); 参数形式有以下5种: 1)new Date("month dd,yyyy hh:mm:ss"); ...
- UNION 和 UNION ALL 操作符
SQL UNION 操作符 1.UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意:UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时 ...
- POJ 1741.Tree 树分治 树形dp 树上点对
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 24258 Accepted: 8062 Description ...
- js 定时更改div背景图片
今天遇到一个业务场景,使用js将一个div标签的背景图片定时更换一下. 之前百度了几个,有css+js,也有css3的,不过css3的兼容有问题,之后同事提示,可以使用js直接来更换div的北京图片, ...
- 别人的Linux私房菜(12)正则表达式与文件格式化处理
vi gerp awk sed支持正则表达式 cp ls不支持,只能使用bash本身的通配符 正则表达式分为基础正则表达式和拓展正则表达式 使用正则表达式注意语系的影响 http://cn.lin ...
- linux之用户密码破解的操作
一 无引导介质救援模式破解root用户密码 1 启动虚拟用户,在GRUB启动画面停留的那段时间,用上下键选择启动项. 2 用‘e’键进入你选择的启动项 ,然后用上下键将光标移动到“linux16... ...
- ActiveMQ_3Java实现
Java实现 添加相应的jar包 <dependency> <groupId>org.apache.activemq</groupId> <artifactI ...
- 后台获取url里面加密的参数中,特殊符号+获取到后端后是 一个空格的解决方法
进行加密,加密后的参数中有个+号: 前端的url:http://mtest.cmread.com:8145/nap/p/QRcode.jsp?activityId=11206&vcode=O/ ...