我有几个Docker容器,其中一个是Mongodb官方映像
这是我的docker-compose.yml文件的一部分
version: '3'
services:
mongo:
image: mongo
container_name: mongo01
# command: ["mongod", "-f", "/etc/mongo/mongod.conf"]
volumes:
- ./data/mongodata:/data/db
# - ./config/mongo:/etc/mongo
restart: always
ports:
- "27017:27017"
我可以从主机(我的系统)访问mongo服务,但是根据mongo新的安全策略,仅通过127.0.0.1
就可以配置对mongo的限制访问,我知道,它是
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
如果我可以推送mongo图像以读取我的自定义配置,则可以解决该问题,但是我尝试了
安装一个自定义配置文件- ./config/mongo:/etc/mongo
,然后用command: ["mongod", "-f", "/etc/mongo/mongod.conf"]
运行mongod,但是没有用。
似乎mongod在进程1中从容器中启动并尝试使用自定义命令运行它不起作用,即使当我尝试使用mongod --shutdown
关闭容器中的mongod时,它也会关闭整个容器。(我想停止mongod,然后使用mongod --bind_ip_all
)
问题是我们如何更改mongo映像配置文件?
答案 0 :(得分:1)
mongo docker image已经设置了ENTRYPOINT,并且基本上是mongod
,因此您可以在命令(CMD)中向mongod添加额外的参数
简单的docker run
docker run -d mongo --bind_ip_all
或带有撰写
version: '3'
services:
mongo:
image: mongo
command: ["--bind_ip_all"]
ports:
- "27017:27017"
答案 1 :(得分:0)
只要您未明确绑定特定IP,官方mongo映像的入口点就已经contains a step to add --bind_ip_all
:
# MongoDB 3.6+ defaults to localhost-only binding
haveBindIp=
if _mongod_hack_have_arg --bind_ip "$@" || _mongod_hack_have_arg --bind_ip_all "$@"; then
haveBindIp=1
elif _parse_config "$@" && jq --exit-status '.net.bindIp // .net.bindIpAll' "$jsonConfigFile" > /dev/null; then
haveBindIp=1
fi
if [ -z "$haveBindIp" ]; then
# so if no "--bind_ip" is specified, let's add "--bind_ip_all"
set -- "$@" --bind_ip_all
fi