Spring Boot + Spring Cloud 實現權限管理系統 後端篇(十六):容器部署項目

容器部署項目

這一章咱們引入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 到鏡像中,簡單解釋一下:後端

  • 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/ 目錄下服務器

打包測試

進入項目根路徑,執行如下命令進行打包。app

#打包
mvn package

編譯成功dom

 編譯成功以後,查看 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/ 版權全部,歡迎轉載,轉載請註明原文做者及出處。

相關文章
相關標籤/搜索