【发布时间】:2018-02-05 09:19:21
【问题描述】:
我正在尝试从在另一个容器中运行的 nodejs 应用程序连接到我的 couchdb 容器。我的 docker-compose 文件是这样的;
version: '3.1'
services:
couchdb:
image: couchdb
container_name: my-db
ports:
- 5984:5984
environment:
COUCHDB_USER: admin
COUCHDB_PASSWORD: password
api:
image: my-api
container_name: my-api
build: .
command: npm run dev
ports:
- 8080:8080
depends_on:
- couchdb
links:
- couchdb
但我总是收到一个错误提示:
Error: connect ECONNREFUSED 172.19.0.2:5984
at Object._errnoException (util.js:1003:13)
at _exceptionWithHostPort (util.js:1024:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1195:14)
我看到这篇文章提到了同样的问题; how to map database from couchdb container to another containers webapp in same docker-compose file
当我尝试这样做时,我遇到了同样的错误。 新的 docker compose 文件;
version: '3.1'
services:
couchdb:
image: couchdb
container_name: my-db
ports:
- 5984:5984
environment:
COUCHDB_USER: admin
COUCHDB_PASSWORD: password
api:
image: my-api
container_name: my-api
build: .
command: npm run dev
ports:
- 8080:8080
depends_on:
- couchdb
links:
- couchdb
environment:
DB_URL: http://admin:password@couchdb:5984
还是一样的错误..
我正在尝试在 nodejs 端将 couchdb 容器与其服务名称('couchdb')连接起来。我还检查了容器是否在同一个网络上。两者都在使用网桥驱动程序的名为“my_default”的网络上。
当我尝试从本地运行的 nodejs 应用程序连接到 db 时,没有问题。
有什么我忘记了吗?
【问题讨论】:
-
您总是可以在您的 api 容器中运行 bash 并尝试使用 curl 调试问题
-
感谢您的建议。我发现了问题。当 couchdb 服务未准备好时,Api 服务尝试连接到 db。我写了一个 docker-entrypoint.sh 来让 api 服务等待 couchdb 服务准备好。现在可以了。
标签: node.js docker docker-compose couchdb dockerfile