【发布时间】:2019-06-18 23:45:45
【问题描述】:
我目前在尝试在 Openshift 中设置 nginx:alpine 时遇到问题。
我的构建运行良好,但我无法部署权限被拒绝并出现以下错误
2019/01/25 06:30:54 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" 失败(13:权限被拒绝)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" 失败 (13: Permission denied)
现在我知道 Openshift 在权限方面有点棘手,因为容器在没有 root 权限的情况下运行,并且 UID 是在 runetime 上生成的,这意味着它在 /etc/passwd 中不可用。但用户是组根的一部分。现在在这里描述应该如何处理这个问题
我什至更进一步,使整个 /var 完全可访问 (777) 用于测试目的,但我仍然收到错误。这就是我的 Dockerfile 的样子
Dockerfile
FROM nginx:alpine
#Configure proxy settings
ENV HTTP_PROXY=http://my.proxy:port
ENV HTTPS_PROXY=http://my.proxy:port
ENV HTTP_PROXY_AUTH=basic:*:username:password
WORKDIR /app
COPY . .
# Install node.js
RUN apk update && \
apk add nodejs npm python make curl g++
# Build Application
RUN npm install
RUN ./node_modules/@angular/cli/bin/ng build
COPY ./dist/my-app /usr/share/nginx/html
# Configure NGINX
COPY ./openshift/nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./openshift/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
RUN chgrp -R root /var/cache/nginx /var/run /var/log/nginx && \
chmod -R 777 /var
RUN sed -i.bak 's/^user/#user/' /etc/nginx/nginx.conf
EXPOSE 8080
有趣的是,这种方法似乎只影响了 nginx 的高山版本。 nginx:latest(我认为基于 debian)没有问题,并且设置方法在这里描述
https://torstenwalter.de/openshift/nginx/2017/08/04/nginx-on-openshift.html
有效。 (但我在构建时遇到了一些其他问题,所以我切换到 alpine)
任何想法为什么这仍然不起作用?
【问题讨论】:
-
我猜你在
docker-compose.yml文件中的某个地方设置了user,这就是导致问题的原因,因为用户是非root 用户。 nginx 服务需要绑定端口并且必须是 root。 -
您是否能够解决问题,在关注
torstenwalter.de链接后删除了所有错误,但仍然存在nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)。虽然 usnignginx:latest而不是nginx:alpine解决了这个问题
标签: docker nginx openshift root alpine