【发布时间】:2018-09-06 20:56:07
【问题描述】:
我正在使用 Docker 运行后台服务分析我的 dev 目录。我在我的容器上使用docker run -v /host/project:/media/analysis:rw 来运行它。
但是,这个命令会导致一个问题,这个卷中的文件属于 UID 1000(根),而我想用我的服务打开它。我正在使用chown user:user -R /media/analysis,但是这需要从 docker 容器运行命令,并且我想避免用户在运行容器后执行命令。
第二个问题是,即使我使用runcommand 运行脚本,因为它是一个开发者目录,肯定会添加新文件,我发现在主机上创建新文件被视为“root” " Docker 的文件,这意味着我还需要在服务处理时更新卷权限。
问候, 沃尔多
更新:
我想了另一种方法来解决我的问题,它有效,但作为一个初学者,我想知道是否有合适的方法来做到这一点。
在我的 Dockerfile 中,我添加了一个 ENTRYPOINT script.sh,其内容如下:
#!/bin/bash
olduser=$(id -u sonarqube)
oldgroup=$(id -g sonarqube)
usermod -u ${USER_ID} sonarqube \;
groupmod -g ${GROUP_ID} sonarqube ;
find / -group ${oldgroup} -exec chgrp -h sonarqube {} \;
find / -user ${olduser} -exec chown -h sonarqube {} \;
然后,我使用以下命令来运行我的容器:
docker run -v /project:/analysis:rw -e USER_ID=$(id -u) GROUP_ID=$(id -g) image
【问题讨论】:
标签: docker dockerfile