關於docker的配置文件與環境變量的小發現


###### 核心內容:使用官方鏡像前,一定要拜讀它官方自帶的description;

使用官方鏡像前,一定要拜讀它官方自帶的description;作為眾人認可的官方鏡像,你未來遇到的大部分問題,很大可能都在這里預置了解決方案。仔細看docker自帶官方描述,讓你對docker的使用更順利。

最近初初接觸docker,發現有一點在使用時很不方便,就是配置文件的修改。經過一番波折,終於解決了該問題。

例如emqx的鏡像,plugins/emqx_auth_mysql.conf配置文件中的mysql連接信息等配置,是需要根據部署環境不同而變化的,不能寫死在鏡像中
解決方案1:通過掛載外部emqx_auth_mysql.conf替換容器內文件,可以解決問題。但總覺得把整個配置文件暴露在外不方便,且讓運維人員維護復雜文件中一個值會增加工作難度
解決方案2:重新打包emqx鏡像,增加shell腳本,通過sed命令替換指定變量;啟動鏡像時通過變量名傳遞要修改的配置。
但shell腳本編寫sed替換總是遇到各種麻煩時,且菜鳥寫的dockerfile文件缺失也很菜,無端引入很多坑。
同時,通過變量傳遞的值有時會莫名其妙替換掉一些關鍵配置。

后來仔細研究發現docker自身會留出一些變量設置,方便用戶通過變量向配置文件中傳遞值。這就方便快捷的解決了配置文件關鍵參數修改的問題,同時也解釋了為什么一些核心參數值莫名被修改問題,因為你的變量名正好使用了docker預留的變量名。
-----------------------------------關鍵內容來了------------------------------------------
如何了解docker鏡像提供了哪些環境變量,看官方,看官方,看官方,重要的事說三遍,不要百度盲目搜搜搜
https://hub.docker.com/r/emqx/emqx


繼續往下翻


如何使用變量修改配置文件,詳細描述
強調一點,當然如果你的配置文件太復雜,使用掛載更方便,仍可以繼續使用。解決方案千千萬,選擇最合適的就好。


免責聲明!

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



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