【发布时间】:2022-07-02 11:27:45
【问题描述】:
我有这个 dockerfile 哪个错误 - 我相信它在运行期间出错,因为在 docker user 上设置的权限不足。我不确定在执行RUN 命令后是否应该将用户声明为app。但我不喜欢 docker,而且写这篇文章的人正在度假。
此外,这个docker 文件作为docker-compose up 的一部分执行
有什么见解吗?
ENV CONFIG_ROOT="/etc/"
USER root
COPY . $HOME/myproject
RUN mkdir /etc/myproject && \
cp -R $HOME/myproject/.envs/myproject $CONFIG_ROOT && \
chown app:app -R $CONFIG_ROOT && \
chown app:app -R $HOME
USER app
RUN pip install --user myproject/ && \
rm -rf $HOME/myproject
ENTRYPOINT ["myproject"]
错误
[3/4] 运行 mkdir /etc/myproject && cp -R /home/app/myproject/.envs/myproject /etc/ && chown app:app -R /etc/ && chown app:app -R /家庭/应用程序: #7 0.238 chown: /etc/hosts: 只读文件系统 #7 0.326 chown: /etc/resolv.conf: 只读文件系统
执行程序运行失败 [/bin/sh -c mkdir /etc/myproject && cp -R $HOME/myproject/.envs/myproject $CONFIG_ROOT && chown app:app -R $CONFIG_ROOT && chown app:app -R $ HOME]:退出代码:1
【问题讨论】:
-
你为什么要 chown /etc 中的每个文件?里面有很多不应该更改的文件。
-
(构建)容器从主机获取一些“特殊”文件(
/etc/resolv.conf)。确切的实现似乎取决于版本。 stackoverflow.com/a/41033030/7868781,unix.stackexchange.com/a/348406/494713。也就是说,你可能不想成为chown-ing 这种方式。 -
@BMitch 谢天谢地,它当时出错了,没有发生劫持!我同意这在许多方面似乎有点矫枉过正。 @frippe 如果我删除
chown app:app -R $CONFIG_ROOT它运行正常。感谢您的链接,我现在也对这个问题有了更好的了解。