Основная задача - запустить докер на портах и подключиться к ним через локальный хост.
Как это должно работать:
Сервис № 1 (./service_one/docker-compose.yml)
NodeJS # 1 через порт 3001
MongoDB # 1 через порт 27018
Узел # 1 подключается к MongoDB # 1 как localhost:27018
(или по умолчанию localhost:27017
)
Сервис № 2 (./service_two/docker-compose.yml)
NodeJS # 2 через порт 3002
MongoDB # 2 через порт 27019
Узел № 2 подключается к MongoDB # 1 через localhost:27018
и MongoDB # 2 через localhost:27019
(или по умолчанию 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
Очень странно, но нет понятного учебника, как это сделать.
Update.
В примере я хочу подключиться к MongoDB # 1 с NodeJS # 1 .
Моя строка подключения будет:
mongodb://user:user@mongo-users:27017/user
Который работает отлично. Но при использовании его с NodeJS # 2 невозможно достичь mongo-users
, потому что network_mode: host
не работает на Mac (и нормально на Windows или любом Linux). Так что мои контейнеры просто не работают на компьютерах других людей.
failed to connect to server [mongo-users:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND mongo-users mongo-users:27017]
Я пытался использовать bridge
, создать сеть. Но ни одно из решений не работает для меня.