我想在基于 alpine 的 docker 文件中将激进的 nginx 与 nginx 一起使用。我目前正在开发 Dockerfile 并注意到一个非常奇怪的行为,也许有人可以向我解释一下。
- 构建镜像
https://gist.github.com/cdpb/7ab1690f30fe6a911dac
docker run -it <id> sh
su radicale -c 'nginx -t'
:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] mkdir() "/var/lib/nginx/tmp/client_body" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
ls -l /var/lib/nginx/tmp
:
total 20
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 client_body
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 fastcgi
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 proxy
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 scgi
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 uwsgi
su radicale -c 'nginx -t'
:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
那么之后会发生什么ls
?它不应该影响任何权限......!?有人可以重现这个吗?
问候
cdpb
UPDATE1:也适用于stat /var/lib/nginx/tmp/*
UPDATE2:因为 docker 为 Dockerfile 中的每个命令创建了一个新层,我认为 nginx 必须在与 chmod/chown 层相同的层中启动 - 没有解决问题
UPDATE3:我对安装了 alpine 的磁盘( virtualbox )做了同样的事情,但问题没有发生。所以这更像是一个与docker相关的问题或一个特殊的alpine docker one