使用bindIp时,可以在mongo配置文件中使用网络别名吗?

时间:2019-05-14 21:33:40

标签: mongodb configuration docker-compose

我试图让我的mongodb容器侦听我的API尝试连接,但它不会启动。据我了解,使用bindIpAll并将其设置为true是不理想的,因此我在撰写文件中创建了一个网络以获取它们之间的一些通信。

这是我在docker compose文件中的配置:

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:

我包括了单元服务,以帮助理解以下内容。在下面的块中,我尝试为网络设置别名,并使用网络的实际名称,但是我还没有找到使用该服务名称的解决方案。这是我的mongo配置的net部分。

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

就像我提到的服务无法启动一样,mongo给我以下消息:

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"

0 个答案:

没有答案