主要任务是在端口上运行docker并通过localhost连接到它们。
应如何工作:
服务#1 (./service_one/docker-compose.yml)
在端口3001
上的NodeJS#1
端口27018
上的MongoDB#1
节点#1 以localhost:27018
(或默认为localhost:27017
)连接到 MongoDB#1
服务#2 (./service_two/docker-compose.yml)
NodeJS#2 在端口3002
端口27019
上的MongoDB#2
节点#2 通过localhost:27018
连接到 MongoDB#1 ,并通过localhost:27019
连接到 MongoDB#2 默认localhost:27017
)
NodeJS#1 可通过http://localhost:3001/
获得。
NodeJS#2 可通过http://localhost:3002/
获得。
MongoDB#1 可通过localhost:27018
使用。
MongoDB#2 可通过localhost:27019
使用。
当前配置状态为:
version: '3.1'
services:
node-users:
container_name: node-users
command: "npm start"
depends_on:
- mongo-users
expose:
- 3001
image: node:10.9.0
mongo-users:
container_name: mongo-users
expose:
- 27018
image: mongo:4.0.1
ports:
- 27018:27017
environment:
MONGO_INITDB_ROOT_USERNAME: user
MONGO_INITDB_ROOT_PASSWORD: user
MONGO_INITDB_DATABASE: user
hostname: mongo-users
第二个。
version: '3.1'
services:
node-auth:
container_name: node-auth
command: "npm start"
depends_on:
- mongo-auth
expose:
- 3002
image: node:10.9.0
mongo-auth:
container_name: mongo-auth
expose:
- 27019
image: mongo:4.0.1
ports:
- 27019:27017
environment:
MONGO_INITDB_ROOT_USERNAME: auth
MONGO_INITDB_ROOT_PASSWORD: auth
MONGO_INITDB_DATABASE: auth
hostname: mongo-auth
# network_mode: host won't work on docker for Mac!!!
network_mode: host
很奇怪,但是没有可理解的教程。
更新。
例如,我想从 NodeJS#1 连接到 MongoDB#1 。
我的连接字符串为:
mongodb://user:user@mongo-users:27017/user
哪个效果很好。但是从 NodeJS#2 使用它时,由于mongo-users
在Mac上无法运行(在Windows或任何Linux上都可以),因此无法访问network_mode: host
。因此,我的容器无法在其他人的计算机上工作。
failed to connect to server [mongo-users:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND mongo-users mongo-users:27017]
我尝试使用bridge
创建网络。但是没有一种解决方案对我有用。