与链路和环境的Django泊坞窗设置
问题描述:
我设立的Django与码头工人,我不能真正得到什么设置正确的方式setting.py与链路和环境的Django泊坞窗设置
例如,我有数据库目前已经在所述setting.py是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['db_name'],
'USER': os.environ['db_user'],
'PASSWORD': os.environ['db_password'],
'HOST': 'db',
'PORT': '5432',
}
}
其中db_name
,db_user
,db_password
在环境文件被设置。 db
改为--link
(docker run --link mydb:db ..
)。
现在,它似乎工作,但我不知道我应该这样做。
这是设置设置的正确方法吗?尤其是在应该放置什么东西的情况下,在环境中调用变量的方式是什么(显然,docker正在创建变量),以及何时/如何在设置中使用链接容器(使用名称或使用env变量?)。
有没有办法使用'db'
或环境变量作为host
?我想这样做可能会指定db
为link
或在.env
文件中。
答
你可以通过环境变量容器与-e
标志:
export DB=db
docker run -e db_host=$DB --link mydb:$DB mycontainer
:
docker run -e VAR_NAME=VAR_VALUE ...
所以,如果你的db
值的方法访问运行容器,你可以沿着这些线路做一些事情
,然后在Django设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['db_name'],
'USER': os.environ['db_user'],
'PASSWORD': os.environ['db_password'],
'HOST': os.environ['db_host'], # 'db' in this example
'PORT': '5432',
}
}
根据您的设置,您也可以加载整个.env
文件,而不是导出单个DB
变量(请参阅the answers to this question以获取有关它的解释)。通过这种方式 - 假设您的应用程序负责为自身加载env文件 - 您不必将环境变量传递给容器,因为应用程序将依靠.env
文件获取该值。
# Assuming DB=db in the .env file
docker run -e --link mydb:$DB mycontainer