我试图让我的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"