首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dockerfile中指定umask

在Dockerfile中指定umask
EN

Stack Overflow用户
提问于 2016-06-11 08:34:32
回答 2查看 6.3K关注 0票数 5

我正在使用Mac,最近我尝试用docker建立一个开发环境。Docker似乎不错,但目前我面临着以下问题:

问题:

每当PHP (在docker容器中)创建带有子文件夹的文件夹时,apache就会导致一个500错误。Apache-log:“.无法创建目录app/.././文件夹/子文件夹/子文件夹/”

我假设这是由环境变量umask造成的,因为每当创建文件夹时,它都没有写权限。因此,无法创建子文件夹,依此类推。

为了测试这一点,我编写了一个小的test-script (umask-test.php):

代码语言:javascript
复制
$umask = umask(0);
echo ("umask = $umask <br>");

还有宾果!每次构建和运行容器并通过浏览器启动脚本时,结果是:

代码语言:javascript
复制
umask = 18

目标:

所以我希望umask总是被设置为000 (0)

我认为,设置这个变量的最佳位置应该是Dockerfile,因此在Dockerfile中,我声明如下:

代码语言:javascript
复制
FROM ubuntu:trusty
...
ENV UMASK 0
...

问题是,这没有任何结果:

  • 测试脚本为umask提供了18。
  • 文件夹仍然使用错误的权限创建。
  • 无法创建子文件夹。

问题:

我做错了什么?

在码头集装箱中,如何将umask设置为零?

如何允许apache用户(www-data)创建始终具有写权限的文件夹以及可以在其中创建子文件夹?

EN

回答 2

Stack Overflow用户

发布于 2016-06-11 15:01:18

问题求解

由于希望这对其他人有所帮助,我想就我自己的问题提供答案:

问题不在于容器中的对接器和umask设置。问题是Mac 上的Mac和umask设置!!

示例:如果Mac上的umask设置为022,那么由docker在挂载目录上创建的文件夹具有755的权限。这会导致无法创建子文件夹。

此链接提供有关如何为Mac:https://support.apple.com/en-us/HT201684设置umask的信息。

所以如果你输入你的终端

代码语言:javascript
复制
 sudo launchctl config user umask 000

重新启动时,您的所有文件夹都将使用777权限创建。包括安装到停靠点的文件夹。

在我问自己为什么运行容器之前(用运行-v初始化.)不是真的起作用。现在看来一切正常!-)

票数 6
EN

Stack Overflow用户

发布于 2016-06-11 08:55:25

根据您用ENV设置的Docker环境变量,确实会持久化到正在运行的容器中,但是Apache可能非常挑剔它在启动时从安全角度关注哪些变量。

试试this answer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37761693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档