容器部署項目
這一章我們引入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/
版權所有,歡迎轉載,轉載請注明原文作者及出處。