• 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.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: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/ 目录下

    打包测试

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

    #打包
    mvn package

    编译成功

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

    执行以下命令启动应用。

    #启动
    java -jar target/kitty-monitor-1.0.0.jar

     启动过程。

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

    构建Docker镜像

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

    mvn package docker:build

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

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

    docker images

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

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

    docker run -p 8000:8000 -d kitty/kitty-monitor

    说明:

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

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

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

    docker ps

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

     

    应用启动关闭

    启动应用

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

    说明:

    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/ 
    版权所有,欢迎转载,转载请注明原文作者及出处。

  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/xifengxiaoma/p/9724026.html
Copyright © 2020-2023  润新知