Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 命令'/bin/sh-c服务mongod启动和#x27;返回非零代码:docker中的1_Mongodb_Docker - Fatal编程技术网

Mongodb 命令'/bin/sh-c服务mongod启动和#x27;返回非零代码:docker中的1

Mongodb 命令'/bin/sh-c服务mongod启动和#x27;返回非零代码:docker中的1,mongodb,docker,Mongodb,Docker,我正在尝试创建一个docker映像,在我的Raspberry Pi 3+上运行Mongodb,并使用Raspbian buster。但当我构建映像并运行容器时,mongodb不会自动启动,所以我添加了命令运行服务mongod start,然后构建映像。Mongodb似乎已安装,我通过服务检查了所有状态,Mongodb已列出但未启动。docker尝试启动mongodb服务时出错:命令'/bin/sh-c service mongod start'返回非零代码:1 这是myDockerfile: F

我正在尝试创建一个docker映像,在我的Raspberry Pi 3+上运行Mongodb,并使用Raspbian buster。但当我构建映像并运行容器时,mongodb不会自动启动,所以我添加了命令
运行服务mongod start
,然后构建映像。Mongodb似乎已安装,我通过
服务检查了所有状态,Mongodb已列出但未启动。docker尝试启动mongodb服务时出错:
命令'/bin/sh-c service mongod start'返回非零代码:1

这是myDockerfile:

FROM cretzel/rpi-mongodb
WORKDIR /usr/src/mongodb

RUN chmod +x /var/lib/mongodb
RUN service mongod start

EXPOSE 27017

CMD ["mongod"]
FROM cretzel/rpi-mongodb
WORKDIR /usr/src/mongodb
COPY ./entrypoint.sh .
RUN chmod +x ./entrypoint.sh
VOLUME ./database /data/db
EXPOSE 27017
CMD ["mongod"]
我试图修复这个问题,但被告知它没有权限,所以我将
runchmod+x/var/lib/mongodb
添加到我的dockerfile中,但它不起作用

有人能帮忙吗

----------------更新自@adii的答案----------------------------------- 我的新dockerfile:

FROM cretzel/rpi-mongodb
WORKDIR /usr/src/mongodb

RUN chmod +x /var/lib/mongodb
RUN service mongod start

EXPOSE 27017

CMD ["mongod"]
FROM cretzel/rpi-mongodb
WORKDIR /usr/src/mongodb
COPY ./entrypoint.sh .
RUN chmod +x ./entrypoint.sh
VOLUME ./database /data/db
EXPOSE 27017
CMD ["mongod"]
entrypoint.sh

#!/bin/bash
service mongod start
exec "$@"
更改解决了我的错误,但mongodb服务仍然无法启动。这是一个日志文件:

Starting database: mongodb failed!
db level locking enabled: 1
mongod --help for help and startup options
Mon Nov 11 16:31:15 
Mon Nov 11 16:31:15 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Mon Nov 11 16:31:15 
warning: some regex utf8 things will not work.  pcre build doesn't have --enable-unicode-properties
Mon Nov 11 16:31:15 [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db/ 32-bit host=38271f34412b
Mon Nov 11 16:31:15 [initandlisten] 
Mon Nov 11 16:31:15 [initandlisten] ** NOTE: This is a development version (2.1.1-pre-) of MongoDB.
Mon Nov 11 16:31:15 [initandlisten] **       Not recommended for production.
Mon Nov 11 16:31:15 [initandlisten] 
Mon Nov 11 16:31:15 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Mon Nov 11 16:31:15 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Mon Nov 11 16:31:15 [initandlisten] **       with --journal, the limit is lower
Mon Nov 11 16:31:15 [initandlisten] 
Mon Nov 11 16:31:15 [initandlisten] db version v2.1.1-pre-, pdfile version 4.5
Mon Nov 11 16:31:15 [initandlisten] git version: 47fbbdceb21fc2b791d22db7f01792500647daa9
Mon Nov 11 16:31:15 [initandlisten] build info: Linux raspberrypi 3.2.27+ #102 PREEMPT Sat Sep 1 01:00:50 BST 2012 armv6l BOOST_LIB_VERSION=1_49
Mon Nov 11 16:31:15 [initandlisten] options: {}
Mon Nov 11 16:31:15 [initandlisten] waiting for connections on port 27017
Mon Nov 11 16:31:15 [websvr] admin web console waiting for connections on port 28017
Mon Nov 11 16:32:15 [clientcursormon] mem (MB) res:20 virt:83 mapped:0

我不太了解Docker,它没有显示任何错误。请帮忙

您不应在
RUN
命令处启动进程,每个RUN命令在单独的shell中运行,
RUN
用于安装和配置,而不是启动进程。要在容器中启动进程,需要在
entrypoint
CMD
处启动进程

此外,容器需要在前台运行一个进程,这样在容器的情况下服务将无法工作。所以

EXPOSE 27017
CMD ["mongod"]
这足以启动mongo进程,如果容器已启动并正在运行,则意味着mongod进程正在运行,您不需要使用
service--status all
检查状态。MongoDB进程一结束,容器就会自动结束


建议您使用

谢谢您的回答。我添加了entrypoint.sh,它看起来很有效。但是出现了另一个错误。导致错误的时间很长,所以我更新了这个问题。我使用的是raspbian buster,所以官方mongo不适合32位操作系统。