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/ 
版權所有,歡迎轉載,轉載請注明原文作者及出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM