容器部署项目
这一章我们引入docker,采用docker容器的方式部署我们的项目。
首先需要有一个linux环境,并且安装 java 和 maven 以及 docker 环境,这个教程多如牛毛,不再赘述。
这里以 kitty-monitor 为例。
添加配置
在 pom.xml 的 properties中添加 Docker 镜像名称。
kitty
在 plugins 中添加 Docker 构建插件配置。
org.springframework.boot
spring-boot-maven-plugin
com.spotify
docker-maven-plugin
1.0.0
${docker.image.prefix}/${project.artifactId}
src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar
在目录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
源码下载