docker - docker build 失败,在`nginx -t`上出现“permission denied”
问题描述
我在fpm-stretch
基于 php docker 映像的顶部安装 nginx,复制一些配置,然后nginx -t
在Dockerfile
.
那一个失败了nginx: [emerg] open() "/tmp/nginx.pid" failed (13: Permission denied)
。
配置包含pid /tmp/nginx.pid;
.
是Dockerfile
:
FROM php:7.3.11-fpm-stretch
run apt-get update && apt-get install -y nginx nginx-extras
COPY .system_conf/nginx/nginx.conf /etc/nginx/nginx.conf
COPY .system_conf/nginx/real-ip.conf /etc/nginx/real-ip.conf
COPY .system_conf/nginx/app.conf /etc/nginx/sites-enabled/default
run touch /tmp/nginx.pid
run chown -R www-data:www-data /tmp/nginx.pid /etc/nginx /var/www /usr/local/etc/php-fpm*
run ls -la /tmp/nginx.pid
run whoami
run nginx -t
构建输出是:
Step 6/10 : run touch /tmp/nginx.pid
---> Running in b78b8c25da6e
Removing intermediate container b78b8c25da6e
---> 0ca504a62dcc
Step 7/10 : run chown -R www-data:www-data /tmp/nginx.pid /etc/nginx /var/www /usr/local/etc/php-fpm*
---> Running in 6d0e3e6e0085
Removing intermediate container 6d0e3e6e0085
---> 5801bebe1238
Step 8/10 : run ls -la /tmp/nginx.pid
---> Running in 3779596a2bf9
-rw-r--r-- 1 www-data www-data 0 Aug 5 13:19 /tmp/nginx.pid
Removing intermediate container 3779596a2bf9
---> fa5fb9b67a43
Step 9/10 : run whoami
---> Running in 3c501d3ef8d0
root
Removing intermediate container 3c501d3ef8d0
---> f4c8d7c894a3
Step 10/10 : run nginx -t
---> Running in 91687a1ea4d2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] open() "/tmp/nginx.pid" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
真正奇怪的事情来了:
这发生在我同事的电脑上。在我的电脑上,一切正常。
我们都在运行 ubuntu(我 18.04,他 20.04)和相同的 docker 版本(19.03)。
更新 1:
我这样做chmod 777 /tmp/nginx.pid
了Dockerfile
,我得到了同样的错误。
解决方案
您可能需要授予该文件的权限nginx.pid
。
尝试这个:
FROM php:7.3.11-fpm-stretch
RUN apt-get update && apt-get install -y nginx nginx-extras
COPY .system_conf/nginx/nginx.conf /etc/nginx/nginx.conf
COPY .system_conf/nginx/real-ip.conf /etc/nginx/real-ip.conf
COPY .system_conf/nginx/app.conf /etc/nginx/sites-enabled/default
RUN touch /tmp/nginx.pid
RUN chmod 755 /tmp/nginx.pid
RUN chown -R www-data:www-data /tmp/nginx.pid /etc/nginx /var/www /usr/local/etc/php-fpm*
RUN ls -la /tmp/nginx.pid
RUN whoami
RUN nginx -t
推荐阅读
- python - 如何在 Sympy 中定义符号之间的关系条件
- python - 检查文件路径列表是否存在
- xamarin - 如何将 StaticResource 的名称绑定到 ViewModel 属性?
- 3d - 使用热图制作 3D 颌骨模型以测量宽度的不对称性(以毫米为单位)
- reactjs - Next.js 多个 .env 文件
- ruby-on-rails - 无法启动 Ruby on Rails 服务器
- java - MariaDB 10.2,jdbcCompliantTruncation=false 不工作
- amazon-web-services - 为什么 AWS 使用 {"Key" : key, "Value" : val} 语法?
- reactjs - 预期的 ';' 在 JSX 构造函数定义中
- java - 检查Java中数组中复选框的状态