将一个 docker 容器中的 nodejs 应用程序连接到 Docker Swarm 上另一个容器中的 mongodb
Connect nodejs App in one docker container to mongodb in another on Docker Swarm
我在下面设置了一个 docker 堆栈(参见 docker-compose.yml)。
它有 2 项服务:
- 一个(或多个)容器中的 nodejs(环回)服务 运行。
- mongodb 运行 在另一个容器中。
我在我的节点应用程序中使用什么 HOST 来允许它连接到另一个容器中的 mongodb(当前在同一个节点上,但如果我设置一个 swarm 可能在不同的节点上)。
我试过网桥、webnet、主机 IP 等。但没有成功。
注意:我正在使用环境变量 "MONGODB_SERVICE_SERVICE_HOST".
将主机传递到 nodejs 应用程序
提前致谢!!
version: "3"
services:
web:
image: myaccount/loopback-app:latest
deploy:
replicas: 2
restart_policy:
condition: on-failure
ports:
- "8060:3000"
environment:
MONGODB_SERVICE_SERVICE_HOST: "webnet"
depends_on:
- mongo
networks:
- webnet
mongo-database:
image: mongo
ports:
- "27017:27017"
volumes:
- "/Users/jason/workspace/mongodb/db:/data/db"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
webnet
不是主持人。这是mongo-database
。
所以将 webnet
更改为 mongo-database
.
ENV MONGO_URL "mongodb://containerName:27017/dbName"
检查mongo-数据库通信,进入nodejs容器,尝试ping mongo-database
:
ping mongo-database
如果有效,您就知道您的服务器可以与您的 mongo 实例通信。
我在下面设置了一个 docker 堆栈(参见 docker-compose.yml)。
它有 2 项服务: - 一个(或多个)容器中的 nodejs(环回)服务 运行。 - mongodb 运行 在另一个容器中。
我在我的节点应用程序中使用什么 HOST 来允许它连接到另一个容器中的 mongodb(当前在同一个节点上,但如果我设置一个 swarm 可能在不同的节点上)。
我试过网桥、webnet、主机 IP 等。但没有成功。
注意:我正在使用环境变量 "MONGODB_SERVICE_SERVICE_HOST".
将主机传递到 nodejs 应用程序提前致谢!!
version: "3"
services:
web:
image: myaccount/loopback-app:latest
deploy:
replicas: 2
restart_policy:
condition: on-failure
ports:
- "8060:3000"
environment:
MONGODB_SERVICE_SERVICE_HOST: "webnet"
depends_on:
- mongo
networks:
- webnet
mongo-database:
image: mongo
ports:
- "27017:27017"
volumes:
- "/Users/jason/workspace/mongodb/db:/data/db"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
webnet
不是主持人。这是mongo-database
。
所以将 webnet
更改为 mongo-database
.
ENV MONGO_URL "mongodb://containerName:27017/dbName"
检查mongo-数据库通信,进入nodejs容器,尝试ping mongo-database
:
ping mongo-database
如果有效,您就知道您的服务器可以与您的 mongo 实例通信。