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,本人沒試了。進去後,就可以看到生成了一個日誌檔案夾了。
還有問題,這些日誌記錄了也只存在於容器裡,容器沒了的時候日誌也就沒了。