1. 程式人生 > >centos7上部署spring boot

centos7上部署spring boot

不難,記錄備忘:

一、有centos7的機器

  可用Virtualbox安裝centos虛擬機器:https://www.centos.org/download/

二、機器上安裝有docker

  參考文章:https://www.cnblogs.com/yufeng218/p/8370670.html

三、在自己機器上把spring boot專案打包成一個可執行jar包

  我本地用的maven構建,官方支援的一套東西,執行mvn package直接就打包好了,打包步驟略過

四、建Dockerfile  

# 指定一個基礎映象centos
FROM docker.io/centos:latest

WORKDIR 
/app #安裝應用執行的環境java RUN yum -y install java #將目錄下的檔案複製到容器中 COPY . /app #執行jar檔案 ENTRYPOINT ["java" ,"-jar","xxx.jar"]

五、準備好的檔案有這些:

  • Dockerfile
  • application.properties
  • logback-spring.xml
  • xxx.jar

統一弄到前面準備好的centos上去,可以直接在要目錄下建一個app資料夾,把東西放進去

六、構建自己的映象,xxx是為專案的docker映象命名,"."表示當前目錄(應該是表示Dockerfile在當前目錄下?本人還沒弄清):

docker build -t xxx .

七、打包好後,可以檢視一下映象:

docker images

八、執行映象,-d表示後臺執行,-p表示埠對映(表示外部訪問 centos機器IP:80,即可訪問到spring boot在docker裡執行所監聽的8080埠),xxx即第六步定義的docker映象名:

docker run -d -p 80:8080 xxx

 

存在的一些問題:

spring boot專案,一般都用logback記錄日誌。而且開發的時候一般會有一個 logback-spring.xml 檔案在 resources 下,表示要記錄什麼日誌,以及記錄在硬碟哪個位置。但是開發時候日誌的路徑,肯定和centos伺服器上的docker裡的路徑不一樣啊,所以肯定不能用開發時的 logback-spring.xml 。不過剛剛mvn打包時,把logback-spring.xml 也打包進去了,如果在伺服器上不給個專門的logback-spring.xml ,那就用的開發時的了。所以要指定。

在.jar檔案所在的位置,可以放置application.properties ,裡面就包括 logging.config=./logback-spring.xml ,這樣就使用.jar的同級目錄下的logback-spring.xml作為logback的配置檔案,在裡面可以記錄

<property name="LOG_PATH" value="./prologs" /> 即會在當前目錄下記錄日誌了。 好了,現在執行以下命令可以進入到執行中的docker 容器裡去:
docker exec -it <容器ID> bash

bash是固定寫法,據說也可以是/bin/bash和/bin/sh,本人沒試了。進去後,就可以看到生成了一個日誌檔案夾了。

 

還有問題,這些日誌記錄了也只存在於容器裡,容器沒了的時候日誌也就沒了。