2016-07-18 3 views
1

django app에 대한 도킹 - 작성 설정을 작성하면 Dockerfile이 성공적으로 빌드되지만 작성시 django가 문제를 반환합니다 - postgres에 연결할 수 없습니다.docker-compose가 postgres를 시작하지 않습니다

도커 - 실행 웹 bash를 실행하면 redis와 posgres가 모두 연결될 수 없습니다.

내 고정 표시기-compose.yml 파일

web: 
build: . 
    ports: 
    - "8000:8000" 
environment: 
    - 'DATABASE_HOST=db' 
    - 'DATABASE_NAME=mydb' 
    - 'DATABASE_USER=root' 
    - 'DATABASE_PASSWORD=root' 
links: 
    - db 
db: 
    image: postgres:9.1 

sudo는 내가 다음과 같은 오류가 발생했습니다 위로 고정 표시기 - 구성 실행.

web_1 | File "/usr/local/lib/python2.7/site packages/django/db/backends/postgresql/base.py", line 175, in get_new_connection 

web_1 |  connection = Database.connect(**conn_params) 
web_1 | File "/usr/local/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect 
web_1 |  conn = _connect(dsn, connection_factory=connection_factory, async=async) 
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused 
web_1 |  Is the server running on host "localhost" (::1) and accepting 
web_1 |  TCP/IP connections on port 5432? 
web_1 | could not connect to server: Connection refused 
web_1 |  Is the server running on host "localhost" (127.0.0.1) and accepting 
web_1 |  TCP/IP connections on port 5432? 
+0

데이터베이스를 정의하기 위해 환경 변수를 사용하는 장고 설정이 있습니까? –

+0

내 장고 설정은 다음과 같습니다'데이타베이스 = { '기본': { '엔진': 'django.db.backends.postgresql_psycopg2', 'NAME': 'aiotadb', '사용자' '루트', 'PASSWORD': 'root', 'HOST': 'db', 'PORT': '5432', } –

+0

설정 파일에서''HOST ':'localhost ''를 변경하여 변경하려고 시도했습니다. 'DATABASE_HOST = localhost''docker-compose.yml 파일에서도 같은 문제가 발생합니다. –

답변

2

가 나는 또한 docker-compose과 클러스터링을 구축, 아마 (여기 repo입니다) 도움과 문제를 응답 할 것이다. docker-compose.yml 파일과 djangosettings 파일을 볼 수 있습니다 (필요한 라인을 표시했습니다).

당신은이 REPO를 복제하고 django, angular2, postgresqlnginx 용기, 이미 모두 함께 링크를 얻을 수 있습니다.

+0

고마워요 @Nir 이것들을 시도해 봤지만 여전히 오류는 같습니다. * 서버가 "localhost"(:: 1) 호스트에서 실행되고 * .I accepting *. sockite3을 사용하여 docker를 시도했지만 매력적이었습니다. –

+0

@AshishK 내 docker-compose.yml 파일, 내'server' (django)'depends_on' 데이터베이스에 주목하십시오. 즉,'server' 컨테이너는 항상'database' 컨테이너를 기다렸다가 그 이후에, 그리고 그 이후에 회전합니다. 또한,'settings.py' 파일을 업로드하고,'HOST ':'database''와'PORT ': 5432'을 제게 보겠습니다 (귀하의 호스트는 데이터베이스 컨테이너의 이름이어야합니다). – Nir

+0

감사합니다. 문제를 알았습니다. 지금 정상적으로 실행 중입니다. –

0

웹 컨테이너를 postgres 컨테이너에 연결했지만 데이터베이스 이름, 암호 및 사용자를 정의하지 않았습니다. 이미 설정 파일에 데이터베이스 옵션을 정의 할 경우

web: 
    build: . 
    ports: 
    - "8000:8000" 
    links: 
    - db 
    db: 
    restart: always 
    image: postgres:9.1 
    ports: 
     - "5432:5432" 
    volumes: 
     - pgvolume:/var/lib/postgresql/data 
    environment: 
     - POSTGRES_PASSWORD=root 
     - POSTGRES_DB= aiotadb 
     - POSTGRES_USER=root 
    data: 
    restart: always 
    image: postgres:9.1 
    volumes: 
     - /var/lib/postgresql 
    command: tail -f /dev/null 

또한, 당신은 웹 컨테이너에서 ENV 변수로 선언 할 필요가 없습니다.

관련 문제