我在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)。