docker~環境變量到底怎麼用

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

docker-compose.yml裏的環境變量mysql

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裏的環境變量!sql

程序中使用環境變量docker

這些環境變量在部署時設計後,程序的運行時裏,會有具體的體現,你設置什麼,它就獲取什麼,在不一樣的語言裏,使用環境變量的方法也是不一樣的,看下面的例子:數據庫

1 sh腳本使用它json

echo $DB_HOST

2 .netcore裏比較特殊服務器

只配置環境變量名稱,而後每一個環境變量對應一種配置文件,代碼裏只訪問配置文件便可(根據系統當前的環境變量去訪問對應的文件)app

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

.netcore裏也環境變量簡單化了,只須要設置三個默認的,固然也能夠本身擴展,三個默認的分別是Development,Staging和Producting.測試

3 nodejs裏使用它spa

console.log(process.env.APP_HOST)

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

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

相關文章
相關標籤/搜索