我正试图适应Docker,但现在偶然发现了一个我还无法解决的微妙问题。
(我在Windows 10上运行,但是同样的问题也适用于Debian)
我想以非root用户身份运行我的容器入口点,该入口点已经在工作了。但是,我想要一个文件,其中已经设置了应用程序所需的权限(user:usergrp和chmod 600),如下所示:
touch /app/application.properties && \
chown user:usergrp /app/application.properties && \
chmod 600 /app/application.properties
这确实有效。如果我只是在没有任何安装的情况下运行容器,则可以看到其设置正确:
-rw------- 1 user usergrp 0 Jan 6 18:32 application.properties
但是,当我使用单个文件装载覆盖文件时,所有权更改为 root:root 。相反,权限保持为600。
我的困惑来自于以下事实:卷挂载和单个文件挂载在这里的工作方式不同。在我的Dockerfile中,我还有一个目录,该目录被挂载覆盖,它保留所有权和权限。
如何实现为单个文件装载保留所有权,还是必须以其他方式解决呢?
谢谢!
答案 0 :(得分:0)
我尝试重现此问题,并且发现某些命令组合会导致文件成为root用户,例如--mount source=test.properties,target=/app/test.properties
。
尝试使用这种方法来保留单个文件的所有权和权限。此命令组合在我的机器上可以正常工作。
--mount type=bind,source="$(pwd)"/test.properties,target=/app/test.properties