首先,我知道解决问题的方法会更简单,但是为了更好地了解docker,这是我要解决的问题,它是运行dockerized mongodb的方法。
我现在正在尝试通过获取已经存在的Dockerfile并对其进行修改来构建自己的mongodb docker映像。修改:我希望能够访问mongodb服务器使用的mongodb.conf文件。
这是我的Dockerfile。我只添加了一行VOLUME ["/etc"]
,并且更改了最后一行(添加了最后一个-f
参数)。在不进行这些更改的情况下,构建映像并将其运行在容器中即可正常工作。
FROM debian:jessie-slim
RUN apt-get update && \
apt-get install -y ca-certificates && \
rm -rf /var/lib/apt/lists/*
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0C49F3730359A14518585931BC711F9BA15703C6 && \
gpg --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg
ARG MONGO_PACKAGE=mongodb-org
ARG MONGO_REPO=repo.mongodb.org
ENV MONGO_PACKAGE=${MONGO_PACKAGE} MONGO_REPO=${MONGO_REPO}
ENV MONGO_MAJOR 3.4
ENV MONGO_VERSION 3.4.18
RUN echo "deb http://$MONGO_REPO/apt/debian jessie/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR main" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN echo "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN apt-get update
RUN apt-get install -y ${MONGO_PACKAGE}=$MONGO_VERSION
VOLUME ["/data/db"]
VOLUME ["/etc"]
WORKDIR /data
EXPOSE 27017
CMD ["mongod", "--smallfiles", "-f /etc/mongodb.conf"]
但是,随着我的更改,构建的图像无法启动。它立即退出。 docker logs <container-name>
给了我
Error reading config file: No such file or directory
try 'mongod --help' for more information
我使用了运行命令
docker run -p 37017:27017 -d -v /tmp/mongodb/data:/data/db -v /tmp/mongodb/etc:/etc mongo-image
,并希望可以找到位于我的主机系统上/tmp/mongodb/etc/mongodb.conf的文件(是的,它存在于此,我将其放置在此处)。
我在做什么错?我是Docker的新手,我想我可能弄乱了容量吗?
答案 0 :(得分:0)
您无需指定以下行:
VOLUME ["/data/db"]
VOLUME ["/etc"]
您的dockerfile中的VOLUME
在主机上的/var/lib/docker/volumes
下创建了单独的目录,有关更多信息,请检查this。
-v
命令中的 docker run
选项应该足以在容器内的主机上挂载mongodb.conf。
更新,我对您的dockerfile进行了少许更改,它开始工作。
CMD ["mongod", "--smallfiles", "-f", "/etc/mongodb.conf"]
-f
和/etc/mongodb.conf
应该用逗号分隔,即CMD
的语法。
请尝试此操作,让我知道。
答案 1 :(得分:0)
对于正在寻找如何在2019年本地安装dockerized mongo的快速指南并最终遇到该问题中提到的问题(仅在1个小时前发生在我身上的问题)的任何人,我写了一份快速的“指南”: https://yosh.ke.mu/mongo_in_docker
希望这对某人有用...