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

容器在啟動時重定向日誌檔案的方法

* 在啟動時重定向日誌的方法

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語言學習視訊