【发布时间】:2018-12-11 04:40:31
【问题描述】:
我使用docker 并且还使用docker-compose 来绑定每个容器。
在我的 python 烧瓶代码中,像这样引用环境变量。
import os
from app import db, create_app
app = create_app(os.getenv('FLASK_CONFIGURATION') or 'development')
if __name__ == '__main__':
print(os.getenv('FLASK_CONFIGURATION'))
app.run(host='0.0.0.0', debug=True)
这里还有 docker-compose.yml。
version: '3.7'
services:
nginx:
build:
context: .
dockerfile: docker/nginx/dockerfile
container_name: nginx
hostname: nginx-prod
ports:
- '80:80'
networks:
- backend
links:
- web_project
depends_on:
- web_project
environment:
- FLASK_CONFIGURATION=production
mongodb:
build:
context: .
dockerfile: docker/mongodb/dockerfile
container_name: mongodb
hostname: mongodb-prod
ports:
- '27017:27017'
networks:
- backend
web_project:
build:
context: .
dockerfile: docker/web-prod/dockerfile
container_name: web_project
hostname: web_project_prod
ports:
- '5000:5000'
networks:
- backend
tty: true
depends_on:
- mongodb
links:
- mongodb
environment:
- FLASK_CONFIGURATION=production
networks:
backend:
driver: 'bridge'
我通过环境命令设置FLASK_CONFIGURATION=production。
但是当我执行时,可能FLASK_CONFIGURATION=production 不起作用。
我还尝试ENV FLASK_CONFIGURATION production 到每个 dockerfile。 (也不行)
奇怪的是,当我通过 bash(docker exec -it bash) 进入我的容器并使用 export 检查环境变量时,它设置得很完美。
我的 docker 设置中有错误的代码吗?
谢谢。
【问题讨论】:
-
那么如果你登录到 nginx 容器并查看 env 变量是否设置会发生什么?
-
FLASK_CONFIGURATION=production设置完美。但它不起作用。 -
另一个奇怪的事情是,当我通过 bash shell 执行我的烧瓶服务器时,它可以工作。
-
是的,我同意语法看起来是正确的。您可以尝试 docker exec-it
bash 到容器上并执行 grep env 吗?如果 FLASK_CONFIGURATION 设置为正确的值,你应该没有任何问题 -
我已经检查过了,它设置得很完美。这就是我陷入困惑的原因:(
标签: docker docker-compose