2016-08-02 72 views
3

設置環境變量我有一個docker-compose.yml文件,並在那裏我定義:獲取或搬運工,compose.yml文件

extra_hosts: 
- "localhost:${MY_MACHINE_IP}" 

它的工作原理,如果我定義爲MY_MACHINE_IP環境VAR前面。

我想實現的是執行類似行動:

extra_hosts: 
- "localhost:<get MY_MACHINE_IP from env if it exists, if not set MY_MACHINE_IP env variable with value <docker-machine-ip>>" 

換句話說:我想在extra_hosts節來定義它,如果已經指定MY_MACHINE_IP,得到它,如果沒有 - 設置該ENV 。變量與值=我的碼頭機器ip。

可能嗎?

回答

0

是在根據搬運工文檔

docker-compose run SERVICE env 

所以我覺得變量都不如你可能認爲全球性的。你必須將它們作爲參數傳遞。 閱讀this

+0

內你能根據我的問題給我一個例子嗎?它會是什麼樣子?因爲我認爲我不完全瞭解你。提前致謝。 – bodley

+0

通過環境:「MY_MACHINE_IP = 0.0.0.0」你可以在這裏閱讀更多。如果您使用docker-compsoe,則有更多選項 - 不運行https://docs.docker.com/compose/environment-variables/ – TreantBG

0

您可以使用該包(dcw Docker撰寫包裝,免責聲明:我是該包的作者)ruamel.dcw。它允許您在docker-compose.yaml文件中創建一個部分,其中包含user-data,該文件在將文件交給正常的docker-compose之前被剝離。這部分可以看起來像:

user-data: 
    author: Your Name <[email protected]> 
    description: container for postfix/submission 
    env-defaults: 
    PORT: 587 # override during development 
    NAME: submission 
    DOCKER_BASE: /data0/DATA 

,然後你可以在文件的其餘部分使用{PORT}{NAME}{DOCKER_BASE},與環境變量覆蓋這些默認值的選項。

該工具還寫了一個文件.dcw_env_vars.inc,你可以複製到你的容器和來源,以獲得適當的值到腳本中您RUNDockerfile

+0

對於一些「特殊」,可以使用「HOST_IP: Anthon