这一章咱们引入docker,采用docker容器的方式部署咱们的项目。前端
首先须要有一个linux环境,而且安装 java 和 maven 以及 docker 环境,这个教程多如牛毛,再也不赘述。java
这里以 kitty-monitor 为例。linux
在 pom.xml 的 properties
中添加 Docker 镜像名称。git
<properties> <docker.image.prefix>kitty</docker.image.prefix> </properties>
在 plugins 中添加 Docker 构建插件配置。spring
<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 文件用来讲明如何来构建镜像。docker
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 到镜像中,简单解释一下:后端
/tmp
的目录,因为 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp
做为工做目录。这个命令的效果是:在宿主机的/var/lib/docker
目录下建立一个临时文件并把它连接到容器中的/tmp
目录java.security.egd
的系统属性指向/dev/urandom
做为 ENTRYPOINT将项目 kitty-monitor 拷贝服务器中,如我这里上传到 /usr/kitty/ 目录下服务器
进入项目根路径,执行如下命令进行打包。app
#打包
mvn package
编译成功dom
编译成功以后,查看 target 目录下面正常生成了 jar 包。
执行如下命令启动应用。
#启动 java -jar target/kitty-monitor-1.0.0.jar
启动过程。
启动成功以后访问 服务器:端口号 ,出现以下界面。
执行如下命令,构建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/ 版权全部,欢迎转载,转载请注明原文做者及出处。