容器在啟動時重定向日誌文件的方法
阿新 • • 發佈:2018-12-19
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語言學習視頻
容器在啟動時重定向日誌文件的方法