我想设置一个 MongoDB Docker 容器,该容器将根据我指定的配置文件工作。它如下:
storage:
dbPath: /data/db/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /data/db/mongod.log
net:
port: 27017
bindIp: 127.0.0.1,162.243.243.233
我从 Docker 的 GitHub 下载了 Dockerfile 和 docker-entrypoint.sh,并修改了第一个文件,使其满足我的需求。以下是我得到的相关部分:
ENV MONGO_MAJOR 3.2
ENV MONGO_VERSION 3.2.6
RUN echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
RUN set -x \
&& apt-get update \
&& apt-get install -y \
mongodb-org=$MONGO_VERSION \
mongodb-org-server=$MONGO_VERSION \
mongodb-org-shell=$MONGO_VERSION \
mongodb-org-mongos=$MONGO_VERSION \
mongodb-org-tools=$MONGO_VERSION \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mongodb \
&& mv /etc/mongod.conf /etc/mongod.conf.orig
RUN mkdir -p /data /data/db /data/configdb \
&& chown -R mongodb:mongodb /data /data/db /data/configdb
VOLUME /data /data/db /data/configdb /etc
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
# Add the custom config file
ADD ["mongod.conf","/data"]
EXPOSE 27017
CMD ["mongod", "--config", "/data/mongod.conf"]
当我尝试构建图像时,它会成功。docker run
创建后它会立即退出。
当 Dockerfile 中的最后一行看起来像 时CMD ["mongod"]
,一切正常,容器已启动并运行,但只能从本地主机访问。根据我的mongod.conf
,我正在尝试将访问权限扩展到我的 IP 地址。
配置看起来不错,YAML 有效。容器也可以访问它(docker start -ai <CID>
没有entrypoint.sh
问题)。这里有什么问题以及如何解决?