2016-08-01 2 views
0

나는 고정 표시기와 장고를 설정 그리고 난 정말 지금에서의 setting.py 예를 들어장고 도커 설정

설치하는 올바른 방법은 무엇 나는했습니다 데이터베이스를 얻을 수 없다 setting.py은 다음과 같습니다 db_namedb_user, db_password가 환경 파일에 설정되어

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--link (docker run --link mydb:db ..)입니다.

이제 작동하는 것처럼 보이지만 실제로 이렇게해야하는지 잘 모르겠습니다.

설정을 변경하는 것이 올바른 방법입니까? 특히 비밀스러운 것들이 배치되어야하는 곳, 환경에서 변수를 호출하는 방법은 무엇입니까? (도커는 DB_ 변수를 생성하고 있음), 설정에서 링크 된 컨테이너를 사용할 때/이름 및 env 변수와 함께 사용하는 방법은 언제입니까?

'db' 또는 환경 변수를 host으로 사용할 수 있습니까? 내가 그렇게 beacuse 가지고 싶습니다 dblink 또는 .env 파일을 지정할 수 있습니다.

답변

0

당신은 -e 플래그 컨테이너에 환경 변수를 전달할 수 있습니다

export DB=db 
docker run -e db_host=$DB --link mydb:$DB mycontainer 
: 당신의 db 값이 컨테이너를 실행하는 과정에 액세스 할 수있는 경우

docker run -e VAR_NAME=VAR_VALUE ... 

그래서, 당신이 그 라인을 따라 뭔가를 할 수

다음 장고의 설정 :

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', 
    } 
} 

설정에 따라 DB 변수 하나를 내보내는 대신 .env 파일 전체를로드 할 수도 있습니다 (자세한 내용은 the answers to this question 참조). 이런 식으로 - 앱이 env 파일을 로딩하는 것을 가정한다면, 앱은 값을 얻기 위해 .env 파일에 의존하기 때문에 컨테이너에 환경 변수를 전달할 필요가 없습니다.

# Assuming DB=db in the .env file 
docker run -e --link mydb:$DB mycontainer