2016-08-01 32 views
0

我設立的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_namedb_userdb_password在環境文件被設置。 db改爲--linkdocker run --link mydb:db ..)。

現在,它似乎工作,但我不知道我應該這樣做。

這是設置設置的正確方法嗎?尤其是在應該放置什麼東西的情況下,在環境中調用變量的方式是什麼(顯然,docker正在創建變量),以及何時/如何在設置中使用鏈接容器(使用名稱或使用env變量?)。

有沒有辦法使用'db'或環境變量作爲host?我想這樣做可能會指定dblink或在.env文件中。

回答

0

你可以通過環境變量容器與-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