2016-12-20 2 views
0

하나는 RethinkDB 용이고 다른 하나는 nodejs 앱용 컨테이너 2 개를 만들었습니다. (58015를)다른 컨테이너에서 nodejs 앱을 Rethinkdb에 연결

나는이 RethinkDB 내 nodejs 응용 프로그램을 연결하고자하지만 오류

Error:{"message":"Failed to connect to localhost:58015\nFull error:\n{\"code\":\"ECONNREFUSED\"

를 얻을하려고 매번하지만 열린 포트는 RethinkDB에 도커없이 실행되는 동일한 nodejs 응용 프로그램을 연결할 수 있습니다 .

내 도커 (설정은 내가 RethinkDB 포트를 시도

database: { 
    servers: [ 
     { 
      host: process.env.DB_PORT_28015_TCP_ADDR || 'localhost', 
      port: process.env.DB_PORT_28015_TCP_PORT || 28015 
     } 
    ], 
    name: 'atlas' 
}, 

JS 설정 파일 내부의 호스트와 포트를 설정 한 DB에 내 응용 프로그램을 연결하려면이

# Rethink DB 
rethink: 
    build: docker/rethinkdb 
    container_name: rethink 
    ports: 
    - 58080:8080 
    - 58015:28015 
    - 59015:29015 

# NodeJS 
nodejs: 
    build: docker/nodejs 
    container_name: nodejs 
    ports: 
    - 53000:3000 
    - 55000:5000 
    depends_on: 
    - rethink 

같이 28015을 구성) 그리고 열려있는 나의 항구 (58015)와 더불어 성공없이.

links, network_mode으로이 두 컨테이너를 연결하려고 시도했지만 성공하지 못했습니다.

시도한 모든 해결책이 작동하지 않습니다.

nodejs 앱이 연결을 시도 할 때 내 Rethink 컨테이너가 준비되지 않았다고 생각합니다. 이 문제가 아니라면 정말 문제를 이해하지 못합니다. nodejs 앱이 pm2로 실행 중입니다.

어떻게이 앱을 내 데이터베이스에 연결할 수 있습니까?

+1

주소 : rethink 및 포트 : 28015로 연결을 시도 했습니까? – Lauri

+0

아니요, 이제 작동 중입니다. 감사합니다 –

답변

0

특히 같은 사용을 연결하지 않으면 지금까지 내가 아는 한, 하나 개의 부두 노동자의 컨테이너가 서로를 볼 수 없습니다 :

그래서
docker run \ 
    --name ${NEWAPP} \ 
    --restart=always \ 
    --env MYAPPPAR=${PROJ} \ 
    -v /var/log/docker/node/logs:/usr/src/app/log \ 
    --link myapp_rethink_1:myapp_rethink_1 \ 
    --net myapp_default \ 
    -p ${PORT}:9000 \ 
    -d ${NEWAPP} 

당신이 필요로하는 모두 --net 및 --link :

  • --link 형식은 sourcecontainername : containeraliasname
  • --net 용기는 내부 DNS/계속 서로를 찾을 수 있도록 ainername. 당신은 고정 표시기-작성, 당신의 서비스의 최신 버전을 사용하는 경우
  • 설정 당신을 위해
+0

제가 알기로 시도했지만 도커가 파일 2를 작성했기 때문에 모든 컨테이너가 동일한 네트워크 ('project_default')에 있고 링크가''depends_on'을 사용하고 있으므로 더 이상 사용되지 않습니다. 문제는 연결 호스트입니다. –

1

, 당신은 # Rethink DB rethink: build: docker/rethinkdb container_name: rethink ports: - 58080:8080 - 58015:28015 - 59015:29015 # NodeJS nodejs: build: docker/nodejs container_name: nodejs ports: - 53000:3000 - 55000:5000 links: - rethink depends_on: - rethink

를 사용하여 JS 코드 database: { servers: [ { host: process.env.DB_PORT_28015_TCP_ADDR || 'rethink', port: process.env.DB_PORT_28015_TCP_PORT || 28015 } ], name: 'atlas' },

0

에해야한다 '고정 표시기 네트워크 LS의'와 네트워크를 확인하실 수 있습니다 동일한 네트워크에서 실행되도록 구성됩니다.

'도커 작성'의 최상위 서비스 이름.YML가 : 응용 프로그램 구성에서, DB ','당신의 응용 프로그램에서 RethinkDB에 연결할 때 지정해야 호스트가 될 것이다

# docker-compose.yml 

    version: '3.2' 
    Services: 
     web: 
     build: . 
     links: db 
     ... 
     db: 
     image: rethinkDB 
     ... 

위의 예제를 사용하여 명명 된 호스트를 사용하여 RethinkDB에 연결할 수 있습니다 ' 파일 :

module.exports = { 
     rethinkdb: { 
     host: 'db', 
     port: 28015 
    } 
    };