我目前遇到了一个问题,试图在我的docker文件中设置一个新用户,而不是使用root。镜像构建得很好,但是当我运行容器时,我得到以下错误:
nginx: [emerg] mkdir() "/var/lib/nginx/tmp/client_body" failed (13: Permission denied)
下面是我的dockerfile。我正在使用redhat UBi镜像构建我的dockerfile:
USER root
RUN microdnf --setopt=tsflags=nodocs install -y nginx procps shadow-utils net-tools ca-certificates dirmngr gnupg wget vim\
&& microdnf clean all \
&& rpm -q procps-ng
ENV NGINX_USER="api-gatway" \
NGINXR_UID="8987" \
NGINX_GROUP="api-gatway" \
NGINX_GID="8987"
RUN set -ex; \
groupadd -r --gid "$NGINX_GID" "$NGINX_GROUP"; \
useradd -r --uid "$NGINXR_UID" --gid "$NGINX_GID" "$NGINX_USER"
COPY nginx.conf /etc/nginx/nginx.conf
#To start up NGINX
EXPOSE 80
RUN mkdir -p /var/lib/nginx/
RUN mkdir -p /var/log/nginx/
RUN mkdir -p /var/lib/nginx/tmp/
RUN chmod 755 api-gatway:api-gatway /var/lib/nginx/
RUN chmod 755 api-gatway:api-gatway /var/log/nginx/
EXPOSE 80
USER api-gatway
CMD ["nginx", "-g", "daemon off;"]
你知道为什么这还是不起作用吗?
1条答案
按热度按时间7bsow1i61#
此图像中存在不同的问题:
chmod
使用不当chown
IMO这个Dockerfile部分应该可以解决你的部分问题:
请记住在nginx配置中更改端口。
最后但并非最不重要的一点是,我认为您试图将a文件夹Map到
/var/lib/nginx/tmp/client_body
,因为我没有看到图像中复制的任何内容。在这种情况下,你必须确保主机上的文件夹可以被docker容器中的用户读取。个人观点:你最好使用官方的
nginx
docker镜像。