泊塢V1.9以上版本
如果您使用的碼頭工人V1.9或更高版本,這對於通過構建時間參數的支持是可能的。參數Dockerfile
由using the ARG statement聲明。
ARG REQUIRED_ARGUMENT
ARG OPTIONAL_ARGUMENT=default_value
當你使用docker build
後真正建立你的形象,你可以作爲docker docs描述通過標誌--build-arg
傳遞參數。
$ docker build --build-arg REQUIRED_ARGUMENT=this-is-required .
請注意,這是不推薦使用編譯時變量密碼或祕密,如按鍵或憑證。
此外,構建時變量可能有great impact on caching。因此,應該非常小心地構建Dockerfile,以儘可能地利用緩存,並在其中加速構建過程。
編輯:「docker比v1.9更新」 - 部分是在leedm777:s answer輸入後添加的。
泊塢V1.9
如果您之前1.9使用泊塢版本之前,該ARG
/--build-arg
的做法是不可能的。在構建過程中無法解析此類信息,因此您必須將它們作爲參數傳遞給docker run
命令。
Docker 圖片隨着時間的推移將保持一致,而容器可以被調整並被視爲「丟棄過程」。
老辦法解決這個問題是使用模板。這不是一個很好的解決方案,但是當時很少有可行的選擇之一。 (來自this discussion的啓示)。
- 保存在一個JSON或YAML文件
- 創建一個泊塢窗文件「模板」,其動態以後可以擴展
- 編寫使用一些從配置數據創建一個Dockerfile腳本的所有動態數據模板庫,你所熟悉的
您想要什麼時候運行'。/ script/that/gets/var'? Docker文件用於構建時間。如果你想在容器啓動時運行一些東西,只需創建一個腳本,該腳本運行'./ script/that/gets/var',然後是主命令。 – generalhenry
我希望它在構建時運行並創建將在運行時出現的環境變量。 – Evan