1. 程式人生 > >容器在啟動時重定向日誌文件的方法

容器在啟動時重定向日誌文件的方法

html docker 自己的 doc 直接 pos jar 自定義 而且

* 在啟動時重定向日誌的方法 1. 背景介紹:將java程序部署到容器中時,通常通過java - jar命令進行啟動,這個方式輸入的日誌在控制臺。如果要將該命令輸出的日誌重定向到容器中的某個文件中,必須通過自定義啟動腳本寫明重定向的文件名才行 2. 錯誤做法: 1. 比如通過Dockerfile文件的CMD命令或者ENTRYPOINT命令指定文件名,這些方法都不行,因為在Dockerfile文件中指定的文件名在容器執行CMD或者ENTRYPOINT命令時,容器並不認為這個文件是它自己的,嚴格來說這個文件應該是屬於宿主機的 2. 在docker run命令中直接用 > 進行重定向也不行,道理一樣,因為該重定向文件還是屬於宿主機的 3. 正確做法: 1. 修改基礎鏡像,比如centos7.0,新建啟動腳本,比如root.sh,腳本內容:

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/default-jvm/
export PATH=$JAVA_HOME/bin:$PATH

nohup /usr/lib/jvm/default-jvm/bin/java -Djava.security.egd=file:/dev/./urandom -jar $1 >dockerlog.txt ($1:傳入的要執行的文件 dockerlog.txt:容器中重定向文件名)

    2. 修改root.sh的權限為777

chmod 777 run.sh

    3. 保存提交基礎鏡像:比如:docker commit  容器ID  鏡像名:鏡像版本號
    4. 業務鏡像繼承該基礎鏡像,而且啟動命令指定root.sh

FROM common_wfj_jdk1.8:1.0 基礎鏡像
VOLUME /tmp
#文件拷貝
ADD ./target/gdcrm-tag-client-0.0.1.jar gdcrm-tag-client.jar
#啟動後執行命令
ENTRYPOINT ["/root/run.sh", "/gdcrm-tag-client.jar"] 指定啟動腳本以及傳入參數
#暴露端口
EXPOSE 8761

    5. 業務鏡像啟動: docker run  -tid 鏡像名:鏡像版本號

Python,Maven,Go語言學習視頻

容器在啟動時重定向日誌文件的方法