env变量在运行容器中可见但未在bash脚本中进行插值

时间:2017-10-17 20:03:20

标签: bash docker docker-compose environment

我在docker-compose中设置了一个env变量,如下所示:

cloud:
    build:
      context: foobar/.
    ports:
      - "5000:5000"
    depends_on:
      - redis
      - rabbitmq
      - postgresql
    links:
      - redis
      - rabbitmq
      - postgresql
    environment:
      - RABBITMQ_HOST=rabbitmq

我可以看到它已列在正在运行的容器中,我可以很好地回应它。

WORKON_HOME=/opt/virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHLVL=1
HOME=/root
no_proxy=*.local, 169.254/16
LESSOPEN=| /usr/bin/lesspipe %s
RABBITMQ_HOST=rabbitmq
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env

但是当我尝试在正在运行的容器中的配置文件中使用它时,如下所示:

amqp://guest:guest@${RABBITMQ_HOST}

然后我运行docker-compose up,应用程序退出,因为它找不到RABBITMQ_HOST变量?是什么给了什么?

我正在使用像这样的envdir以一个bash脚本启动gunicorn服务器:

envdir /apps/foobar/.envdir gunicorn -w 2 -b 0.0.0.0:5000 dispatch:app --reload

更新: 我在mac(el capitan)上使用Docker Enterprise Edition(EE)。 我正在使用Flask(python 3)和Gunicorn应用程序服务器(dockerfile)。

0 个答案:

没有答案