Docker Compose部署MongoDB:如何修改容器内mongod配置文件参数?
问题原因
你之前的entrypoint配置启动失败,是因为--bind_ip_all和0.0.0.0参数冲突了——--bind_ip_all本身就是让MongoDB绑定所有可用IP的参数,不需要再加0.0.0.0,重复参数会导致启动报错。
另外你觉得原command参数没实现配置修改,是因为它只会覆盖MongoDB的运行参数,不会修改容器内/etc/mongod.conf.orig的文件内容,但实际MongoDB已经按指定参数在运行了。如果一定要修改配置文件内容并让MongoDB加载它,可以用以下两种方案解决:
方案一:修正启动参数(无需修改配置文件)
如果只需要MongoDB按要求运行,不需要修改配置文件内容,直接修正entrypoint或保留原command即可:
- 保留原
command配置(已生效,仅配置文件内容不变):
command: --replSet "rs1" --bind_ip 0.0.0.0
- 修正后的
entrypoint配置(二选一即可):
# 用--bind_ip指定所有IP entrypoint: [ "/usr/bin/mongod", "--bind_ip", "0.0.0.0", "--replSet", "rs1" ] # 或用--bind_ip_all简化参数 entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs1" ]
方案二:挂载自定义配置文件(彻底修改容器内配置)
如果一定要修改容器内/etc/mongod.conf.orig的内容并让MongoDB加载它,按以下步骤操作:
- 在Docker Compose文件所在目录创建
mongod.conf文件,内容如下:
# network interfaces net: port: 27017 bindIp: 0.0.0.0 # how the process runs processManagement: timeZoneInfo: /usr/share/zoneinfo #security: #operationProfiling: replication: replSetName: "rs1" #sharding: ## Enterprise-Only Options: #auditLog:
- 修改Docker Compose配置,挂载自定义文件并指定加载路径:
version: '3.8' services: mongo3: container_name: mongo3 image: mongo:4.4 volumes: - ~/mongos/data3:/data/db - ./mongod.conf:/etc/mongod.conf.orig networks: - mongo-network ports: - 27017:27017 restart: always command: --config /etc/mongod.conf.orig networks: mongo-network: driver: bridge
启动容器后,容器内的/etc/mongod.conf.orig会被替换为你自定义的内容,MongoDB也会按该配置运行。
内容的提问来源于stack exchange,提问作者ProcolHarum
相关产品推荐
相关产品推荐

