我试图从另一个容器中运行的nodejs app连接到我的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撰写文件;
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 app连接到db时,没有问题。
有什么我忘记了吗?
答案 0 :(得分:0)
您忘记包含连接端口:
DB_URL: http://admin:password@couchdb:5984
答案 1 :(得分:0)
为了向您的发现添加但尚未准备好,Docker文章Control startup order in Compose列出了一些处理这种情况的方法,包括wait-for-it等工具,dockerize或用于轮询依赖状态的脚本。