前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十六):容器部署项目

Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十六):容器部署项目

作者头像
朝雨忆轻尘
发布2019-06-19 16:37:54
5950
发布2019-06-19 16:37:54
举报
文章被收录于专栏:朝雨忆轻尘

容器部署项目

这一章我们引入docker,采用docker容器的方式部署我们的项目。

首先需要有一个linux环境,并且安装 java 和 maven 以及 docker 环境,这个教程多如牛毛,不再赘述。

这里以 kitty-monitor 为例。

添加配置

在 pom.xml 的 properties 中添加 Docker 镜像名称。

代码语言:javascript
复制
<properties>
    <docker.image.prefix>kitty</docker.image.prefix>
</properties>

在 plugins 中添加 Docker 构建插件配置。

代码语言:javascript
复制
<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.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 文件用来说明如何来构建镜像。

代码语言:javascript
复制
FROM openjdk:8-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/ 目录下

打包测试

进入项目根路径,执行以下命令进行打包。

代码语言:javascript
复制
#打包
mvn package

编译成功

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

执行以下命令启动应用。

代码语言:javascript
复制
#启动
java -jar target/kitty-monitor-1.0.0.jar

 启动过程。

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

构建Docker镜像

执行以下命令,构建docker镜像。

代码语言:javascript
复制
mvn package docker:build

出现如下界面就说明镜像构建成功了。

通过命令查看构建好的镜像。

代码语言:javascript
复制
docker images

我们看到的 kitty/kitty-monitor 就是我们构建好的镜像。

执行以下命令启动一个docker容器。

代码语言:javascript
复制
docker run -p 8000:8000 -d kitty/kitty-monitor

说明:

-p 8000:8000 将主机端口映射到容器端口

-d 启用后台进程运行程序

通过以下命令,可以查看运行中的容器。

代码语言:javascript
复制
docker ps

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

应用启动关闭

启动应用
代码语言:javascript
复制
java -jar XXX.jar   #前台启动,退出命令行服务就停止了
代码语言:javascript
复制
java -jar xxx.jar &    #后台启动,终端退出后仍继续运行
代码语言:javascript
复制
java -jar xxx.jar > catalina.out  2>&1 &     #重定向控制台输出到日志文件

说明:

catalina.out将标准输出指向制定文件catalina.out文件,可以自定义文件名称。

2>&1 输出所有的日志文件

& 表示后台启动程序

查杀应用
代码语言:javascript
复制
ps -ef|grep 'java -jar'  #查看运行中的进程
代码语言:javascript
复制
jobs  #查看后台任务
代码语言:javascript
复制
kill %num    #通过jobs命令查看job号(假设为num),然后执行kill %num
代码语言:javascript
复制
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/  版权所有,欢迎转载,转载请注明原文作者及出处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 容器部署项目
    • 添加配置
      • 上传项目
        • 打包测试
          • 构建Docker镜像
            • 应用启动关闭
              • 启动应用
              • 查杀应用
            • 代码重构 
            • 源码下载
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档