docker~環境變量到底怎么用


docker已經用了兩年多了,從開始的簡單應用到現在的自動化部署,已經越來越感覺到它的威力,今天把Hitchhiker部署完成后,看到了它與.net core項目有個類似的地方,就是對於多環境部署的時候都用到了環境變量,Hitchhiker的docker-compose.yml里有對環境地址的設置(當前這個開源項目還有一些BUG,需要掛載一下/utils/index.js,去修改一下自己的端口,這個項目把它在了appconfig.json里了,默認8080,大叔認識不如直接寫到環境變量里,根據具體變量去實現端口的監聽不是更好嗎);在.net core里同樣也是通過環境變量的設置來實現各個配置文件的加載的,這點兩者是同時的,這也是一個趨勢!

docker-compose.yml里的環境變量

services:
  hitchhiker:
    image: lind/ddd
    container_name: lind/ddd:v1.0
    environment:
      - DB_HOST=lind-mysql
      - APP_HOST=http://127.0.0.1
      - APP_Port=8080

上面代碼里,聲明了三個環境變量,用戶在部署時,根據具體環境去填寫信息,如本地測試用的是127.0.0.1和8080,數據庫服務器名是lind-mysql,而在stage和prod環境可能有其它的配置,根據具體的情況去配置它,這就是部署文件yml里的環境變量!

程序中使用環境變量

這些環境變量在部署時設計后,程序的運行時里,會有具體的體現,你設置什么,它就獲取什么,在不同的語言里,使用環境變量的方法也是不同的,看下面的例子:

1 sh腳本使用它

echo $DB_HOST

2 .netcore里比較特殊

只配置環境變量名稱,然后每個環境變量對應一種配置文件,代碼里只訪問配置文件即可(根據系統當前的環境變量去訪問對應的文件)

    environment:
      - ASPNETCORE_ENVIRONMENT=Development
       public Startup(IConfiguration configuration, IHostingEnvironment env)
        {
            ConfigFileHelper.Set(env: env);
            Configuration = configuration;
        }

.netcore里也環境變量簡單化了,只需要設置三個默認的,當然也可以自己擴展,三個默認的分別是Development,Staging和Producting.

3 nodejs里使用它

console.log(process.env.APP_HOST)

通過講,讓我們認識到了環境變量的魅力!

多環境部署,有它才夠靈活!


免責聲明!

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



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