2017-10-13 4 views
0

Docker 외부에서는 우분투 16.04 환경에서 내 django 앱에서 redis 및 rabbitmq의 IP 주소가 'localhost'로 설정됩니다. 그러나, 나는 웹 서비스를 docker로 마이그레이션하려고 노력 중이다. Docker의 공식 저장소 인 redis와 rabbitmq를 사용합니다.Rabbitmq IP 주소와 Docker의 Redis IP 주소

내 Django settings.py에서 내 응용 프로그램에 연결하기 위해 redis 및 rabbitmq의 IP 주소를 명시해야합니다. Docker에서 IP 주소를 결정하는 방법에 대한 단서가 없습니다. 고정 표시기 - compose.yml에서, 구성은 아래에 적혀있다 :

version: '2' 

services: 

    # RabbitMQ 
    rabbit: 
    hostname: my-rabbit 
    image: rabbitmq:3 
    ports: 
     - "5672:5672" # we forward this port because it's useful for 
debugging 
     - "15672:15672" # here, we can access rabbitmq management plugin 

    #Redis 
    redis: 
    image: redis:latest 

    #Data Processing WS 
    web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:9060 --noreload 
    volumes: 
     - .:/srv 
    ports: 
     - "9060:9060" 
    links: ["rabbit", "redis"] 

내가 '로컬 호스트', 오류가에서

settings.CONNECTION = pika.BlockingConnection(pika.ConnectionParameters(host=settings.RABBIT_MQ_ 
IP_ADDRESS, heartbeat_interval=0)) 
web_1  | File "/usr/local/lib/python2.7/dist- 
packages/pika/adapters/blocking_connection.py", line 339, in __init__ 
web_1  |  self._process_io_for_connection_setup() 
web_1  | File "/usr/local/lib/python2.7/dist- 
packages/pika/adapters/blocking_connection.py", line 374, in 
_process_io_for_connection_setup 
web_1  |  self._open_error_result.is_ready) 
web_1  | File "/usr/local/lib/python2.7/dist- 
packages/pika/adapters/blocking_connection.py", line 395, in _flush_output 
web_1  |  raise exceptions.ConnectionClosed() 
web_1  | pika.exceptions.ConnectionClosed 

답변

0

발생으로 자신의 IP를 설정하려고 당신의 docker-compose.yml 당신은 호스트 이름으로 my-rabbit이 하지만 links 섹션에는 rabbit이 있습니다. 이들은 일치해야합니다.

RabbitMQ 호스트 이름을 rabbit으로 변경하십시오.

또한 web 서비스의 경우 depends onrabbitredis 웹 앱을 지정해야합니다. 그러면 web 전에 rabbitredis이 시작됩니다. 웹을 시작할 때 RabbitMQ가 완전히 시작되지 않았을 수 있습니다.

depends_on: 
    - rabbit 
    - redis 
+0

시도했지만 여전히 작동하지 않습니다. 추가 연구에서 나는 여전히 건강 검진을 포함한다 : 시험 : [ "CMD", "컬", "-f", "http://172.17.0.3:15672"] 간격 : 30s 타임 아웃 : 10s 재시도 : 5 내 docker-compose.yml에 있습니다. 어떤 생각? –

+0

바보 같은 질문이지만'docker-compose.yml'을 변경하기 전에'docker-compose down'을 실행하고 있습니까? – grizzthedj

+0

실제로'docker-compose.yml'을 편집 한 후에'docker-compose up'을 종료하고'docker-compose build'를 수행하기 위해'ctrl + c'를 사용합니다. 괜찮습니까? –