docker 啟動jar包,並將日志文件進行掛載


服務器直接啟動jar包命令

打包好的jar包,如果要運行起來,我們可以安裝好java環境只會,直接執行java -jar 將服務啟動起來
nohup java -server -Xms256m -Xmx256m -jar -Dserver.port=8088 -Dspring.profiles.active=local /root/app/auth/kunzhi-auth.jar >> /logs/kunzhi-auth.log 2>&1 &

容器中執行命令,使用docker-compose

但是,我們如果遇到要使用容器管理的時候,這種方式,就不太友好了
我們可以采用如下方式<前提是你的docker已經安裝好,compose也已經安裝好,如果沒有安裝,就參看我其他的博客,有一篇是關於docker的安裝>
然后,我們編寫docker-compose.yml的文件

目錄結構

[root@hadoop1 auth]# ls
docker-compose.yml  kunzhi-auth.jar  kunzhi-auth.sh  logs
[root@hadoop1 auth]# pwd
/root/app/auth
[root@hadoop1 auth]# 

version: "3"
services:
  auth-service:
    # 指定容器名稱
    container_name: auth
    # 重啟機制
    restart: always
    image: java:8
    volumes:
      # 本地jar包路徑
      - /root/app/auth/kunzhi-auth.jar:/root/app/auth/kunzhi-auth.jar
      # 本地腳本路徑
      - /root/app/auth/kunzhi-auth.sh:/root/app/auth/kunzhi-auth.sh
      # 掛載日志 -v A:B ,A指宿主機位置,B指容器位置
      - ./logs:/logs
      # 指定容器時間為宿主機時間
      - /etc/localtime:/etc/localtime
    # 訪問端口
    ports:
      - "8088:8088"
    environment:
      # 指定時區
      - TZ="Asia/Shanghai"
    #啟動容器后執行的命令
    entrypoint: sh /root/app/auth/kunzhi-auth.sh

文件解讀

將宿主機的jar文件和sh腳本文件,掛載到容器里,
docker-compose up -d
會執行 entrypoint 后的命令,即在容器中跑一個掛載過去的腳本
腳本如下

nohup java -server -Xms256m -Xmx256m -jar -Dserver.port=8088 -Dspring.profiles.active=local /root/app/auth/kunzhi-auth.jar >> /logs/kunzhi-auth.log 2>&1 &
tail -f /logs/kunzhi-auth.log

nohup java -jar /root/app/compose/webdav/webdav-aliyundriver-2.4.0.jar --aliyundrive.refresh-token="your token" >> ./logs/webdav.log 2>&1 &
那么就相當於是在容器內執行java -jar的命令,然后,輸出日志文件到指定目錄,再將日志文件的目錄掛載到宿主機,即可在宿主機查看日志,
如果需要更新jar包,發布,只需要替換宿主機的jar包,docker restart 容器名 即可完成替換

如果不需要指定輸出日志的可以參考如下compose文件

version: "3"
services:
  auth-service:
    # 指定容器名稱
    container_name: auth
    # 重啟機制
    restart: always
    image: java:8
    volumes:
      # 本地jar包路徑
      - /root/app/auth/kunzhi-auth.jar:/root/app/auth/kunzhi-auth.jar
      # 本地腳本路徑
      - /root/app/auth/kunzhi-auth.sh:/root/app/auth/kunzhi-auth.sh
      # 掛載日志 -v A:B ,A指宿主機位置,B指容器位置
      - ./logs:/logs
      # 指定容器時間為宿主機時間
      - /etc/localtime:/etc/localtime
    # 訪問端口
    ports:
      - "8088:8088"
    environment:
      # 指定時區
      - TZ="Asia/Shanghai"
    #啟動容器后執行的命令
    entrypoint: java -server -Xms256m -Xmx256m -jar -Dserver.port=8088 -Dspring.profiles.active=local kunzhi-auth.jar

當然,如果要查看日志,可以使用docker logs xxxx
還有,docker會自己收集容器的日志,使用 docker inspect id(容器的id) 可以看到一個 LogPath的目錄 這里就是存儲容器日志的地方,在宿主機中

后續擴展

還有一種方式是直接docker run xxx 這種這里先不做說明,后續,使用到在進行說明


免責聲明!

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



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