Можно ли использовать сетевой псевдоним в файле конфигурации mongo при использовании bindIp? - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь заставить мой контейнер mongodb прослушивать мой API, пытающийся подключиться, но он не запускается. Как я понял, использование bindIpAll и установка его в true не идеальны, поэтому я создал сеть в своем файле compose, чтобы получить некоторую связь между ними.

Вот моя конфигурация в файле компоновки Docker:

version: '3'

networks:
  backend:
services:
  unit:
    image: nginx/unit:1.8.0-full
    networks: 
      backend:
  database:
    image: mongo:4.0-xenial
    entrypoint: mongod --config /etc/mongod.conf
    ports:
      - 27000:27017
    depends_on:
      - unit
    volumes: 
      - ./db/config/mongod.conf:/etc/mongod.conf
      - mongoData:/data/db/
      - mongoLog:/var/log/mongodb/
      - mongoPID:/var/run/mongodb/
    networks: 
      backend:

Я включил сервис единицы для понимания следующего блока. В следующем блоке я попытался установить псевдонимы для сетей, а также с использованием фактического имени сети, и я не получил решение, которое я также пытался использовать с использованием имени службы. Это сетевой раздел моего конфига Монго.

net:
  port: 27017
  bindIp: unit #backend network defined in the docker-compose file

Как я уже говорил, служба не запускается, Монго выдает мне следующее сообщение:

Failed to set up listener: SocketException: Cannot assign requested address

Если я использую bindIpAll в конфиге, кажется, что все работает нормально, но, как я уже говорил, у меня сложилось впечатление (возможно, неправильно), что это неправильный подход.

Вот весь мой файл mongo.conf:

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true

# how the process runs
processManagement:
  fork: false  # run in the background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017
  #bindIpAll: true
  bindIp: unit #backend network defined in the docker-compose file

security:
  authorization: "enabled"

setParameter:
  authenticationMechanisms: "SCRAM-SHA-256"

...