我正在使用官方mongodb docker来自mongo:3.2。在entrypoint.sh中,我正在使用副本模式重新启动Mongodb。 Mongodb进程由root用户拥有。有没有办法我可以由非root用户启动容器,并能够在副本集模式下重新启动mongodb。现在我收到以下错误。
2017-10-27T20:08:23.888 + 0000我在initAndListen中存储[initandlisten]异常:98无法创建/打开锁定文件:/data/db/mongod.lock errno:13权限被拒绝是mongod实例已经正在运行?,终止
我的泊坞窗文件是
FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
ENTRYPOINT ["/root/entrypoint.sh"] here
谢谢,
答案 0 :(得分:1)
当使用ENTRYPOINT,CMD,RUN指令启动/执行所需用户的过程时,您可以使用dockerfile中提供的USER
命令。
语法:
USER <user>[:<group>]
或
USER <UID>[:<GID>]
示例:
FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
USER deploy:root
ENTRYPOINT ["/root/entrypoint.sh"]
从user2010672
更新:(工作解决方案)
FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
RUN chown -R mongodb:mongodb /var/log /data/db
USER mongodb
ENTRYPOINT ["/root/entrypoint.sh"]
感谢user2010672
答案 1 :(得分:1)
@DisabledIf(expression = "#{systemProperties['CI'] == true}")
@DisabledIf(expression = "#{systemProperties['CI']")
@DisabledIf(expression = "#{systemProperties['CI'] == 'true'")
@DisabledIf(expression = "#{systemProperties['CI'] == 'true'")
@DisabledIf(expression = "#{systemProperties['CI'].equals("true")")
version: '3.5'
services:
yourmongo:
image: mongo:xenial
container_name: yourmongo
restart: always
user: 1000:1000
volumes:
- ./yourmongo-folder:/data/db
是uid:gid(user-id:group-id)的选定值
答案 2 :(得分:0)
您可以使用标记 - 用户并使用用户:组格式
来自定义docker run命令上的用户