【发布时间】:2019-10-23 20:45:48
【问题描述】:
晚上好。 我是 docker 的新手,并尝试学习一点。目前正在编写与 mongodb 集成的简单 java 应用程序,但我坚持使用 dockerfile。基本上问题出在 mongodb start 上。这是我的 docker 文件:
FROM debian:buster-slim
# Install necessary libs
RUN apt-get update && apt-get install -y apt-utils wget gnupg gnupg2 curl
# Install mongodb
RUN wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
RUN echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.2.list
RUN apt-get update
RUN apt-get install -y mongodb-org
RUN systemctl enable mongod.service
RUN service mongod start
# Install jre 11
RUN apt-get install -y openjdk-11-jre
这是终端输出(仅最后一步):
Setting up mongodb-org-shell (4.2.1) ...
Setting up mongodb-org-tools (4.2.1) ...
Setting up mongodb-org-mongos (4.2.1) ...
Setting up mongodb-org (4.2.1) ...
Removing intermediate container 7491080bfe9f
---> bbcf5b2ccb13
Step 7/11 : RUN service mongod start
---> Running in 46a66989ade2
mongod: unrecognized service
The command '/bin/sh -c service mongod start' returned a non-zero code: 1
有趣的是,我遵循了官方的 mongodb 安装指南: Mongodb installation on debian
在“真正的”debian/ubuntu 机器上安装期间,它可以工作。
当尝试从 docker hub 的官方 mongodb 映像构建 docker 映像时,它也不起作用,我的意思是 FROM mongo:4.2-bionic
登录容器并尝试运行mongo 后返回:
root@8cc1d270a262:~# mongo
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2019-10-23T20:39:44.728+0000 E QUERY [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2019-10-23T20:39:44.729+0000 F - [main] exception: connect failed
2019-10-23T20:39:44.729+0000 E - [main] exiting with code 1
我预料到了,因为 mongo 无法站立……不知何故。
有什么想法吗?
【问题讨论】:
-
您遇到了多个问题。首先,让 mongo 运行 - 请参阅@rok 的回答。另一个问题是您的 docker 文件尚未公开端口 27017,因此即使 mongo 正在运行,除非在 docker 容器本身上,否则您无法进入 - 根据您的需要,这可能没问题。另一个问题是关于持久卷。如果您继续按原样使用 dockerfile,如果您松开容器,保存的所有数据都将丢失。根据您的需要,这也可能没问题。
标签: mongodb docker containers