2016-07-29 2 views
0

docker-compose의 v1을 사용하여 서비스 집합을 실행 한 다음 Django의 dev serve를 사용하여 연결했습니다. <machine_ip>:<port> (smt는 포스트그레스의 경우 192.168.99.100:5432과 같은 서비스)에 연결했습니다.Docker-compose v2는 컴퓨터에 포트를 노출합니다.

이제 Mac 용 도커가 설치되었으며 v1이 작동하지 않습니다. 버전 2로 옮겼지만 장고는 포트 5432을 수신하는 서비스가 없다고 불평합니다. 내가 이해하는 한, 그것은 network의 문제이지만, 어떻게 구성 할 지에 대해서는 머리를 쓸 수 없다. 이론적으로 기본 네트워크는 작성 내 모든 서비스에 대해 작성됩니다. 일반적으로 좋지만 제 경우에는 그렇지 않습니다. 내가 구성을 사용하여 장고의 로컬 실행에 연결하는 일련의 서비스를 시작합니다.

version: '2' 
services: 
    db: 
    image: postgres:9.4 
    volumes_from: 
     - data 
    ports: 
     - "5432:5432" 
    es: 
    image: elasticsearch:2.3 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    rabbit: 
    image: rabbitmq:3 
    ports: 
     - "5672:5672" 
     - "48429:48429" 
    data: 
    # use this that is already downloaded 
    # links just to keep the db 
    image: alpine:3.3 
    command: echo 'Data Container for PostgreSQL' 
    volumes: 
     - /var/lib/postgresql/data 
networks: 
    default: 
    driver: bridge 

내 장고의 conf 내 고정 표시기-작성 파일

입니다 192.168.99.100는 결과가
django.db.utils.OperationalError: could not connect to server: Connection refused 
    Is the server running on host "192.168.99.100" and accepting 
    TCP/IP connections on port 5432? 
docker-machine ip

입니다

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'postgres', 
     'USER': 'postgres', 
     'HOST': '192.168.99.100', # 'localhost', 
     'PORT': '5432' # '6543' 
    }, 
} 

이 모든 포트를 컴퓨터의 IP에 어떻게 노출시킬 수 있는지에 대한 도움이 필요하십니까?

+0

당신이 192.168를 교체하려고한다. "데이터"가있는 데이터베이스의 99.100 – opHASnoNAME

+0

데이터 컨테이너는 이름이 지정된 볼륨을 사용하여 대부분 사라졌습니다. 이와 같은 연결 문제가 발생하면 컨테이너에서 작업하여 연결이 실패한 곳을 찾으십시오. 포트가 컨테이너에 열려 있고 서비스가 수신 대기 중인지, Docker 호스트 VM에서 시도한 다음 랩톱에서 시도하십시오. Docker for Mac/Win의 최신 버전은 VM을 숨기기 위해 더 많은 작업을 수행하기 때문에 베타 테스트 중이라면 localhost에서 포트를 사용해보십시오. – BMitch

+0

리눅스에서'sudo netstat -luntp'는 어떤 포트가 현재 청취 중인지와 어떤 프로세스에 있는지를 볼 때 유용합니다 (프로세스를보고 싶다면 sudo를 건너 뛰지 마십시오). – BMitch

답변

1

dockers 내부 네트워크 기능을 사용하여 컨테이너가 서로 통신하도록하십시오.

version: '2' 
services: 
    db: 
    image: postgres:9.4 
    volumes: 
     - datavolume_postgres:/var/lib/postgresql/data 
    ports: 
     - "5432:5432" 
    es: 
    image: elasticsearch:2.3 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    rabbit: 
    image: rabbitmq:3 
    ports: 
     - "5672:5672" 
     - "48429:48429" 
    depends_on: 
     - "db" 
# Named volume 
volumes: 
    datavolume_postgres: {} 

#You dont need to specify the default network 

내가 모르는 당신 django.conf

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'postgres', 
     'USER': 'postgres', 
     'HOST': 'db', # 'localhost', 
     'PORT': '5432' # '6543' 
    }, 
} 

에서

은 무엇에 es 내가 당신이 포인트를

을 얻을 희망 BU 따라 참고 depends_on reference

+0

이름이 지정된 볼륨에이 conf를 사용하려고했지만 작동하지 않습니다. 명명 된 볼륨을 올바른 방법으로 어떻게 사용해야합니까? ('볼륨은 매핑이 아니라 배열이어야한다') – EsseTi

+0

젠장! 그 죄송합니다.이 문제를 해결하기 위해 내 게시물을 편집했습니다. – Ohmen

관련 문제