所以我的Dockerfile使用docker-compose运行:
FROM nginx
#COPY conf
COPY myapp/ /usr/share/nginx/html
RUN chmod -R 664 /usr/share/nginx/html
RUN chown -R nginx /usr/share/nginx/html
RUN chcon -R -t httpd_sys_content_t /usr/share/nginx/html
这是在RHEL 6.x上,Docker是1.7或者其他东西。
我甚至不需要为大多数环境“运行chmod / chown / chcon”!! dockerfile在windows上工作得很好。
但是,每当nginx尝试访问/ usr / share / nginx / html中的任何文件时,我仍然会收到403 Forbidden错误。
在docker容器中设置nginx并避免这些SElinux问题的正确方法是什么? (SElinux正在“执行”)
事实上,如果你这样做
RUN / CMD ls -l </ p>
我们可以看到nginx是拥有该文件夹的用户,它拥有正确的权限!那到底是怎么回事?
答案 0 :(得分:0)
与旧Docker 1.7.1和RHEL6相关的特殊情况意味着您必须安装RHEL7。 SELinux不能正常使用它。有一些核心RHEL6库问题(共享库权限错误)使得它几乎不可能与Docker 1.7.1一起使用。
标签都错了。图像内部的进程是init_rc_t类型标签,这些标签不正确。这些文件可以更改为httpd_sys_content_t,但它不起作用。
我认为也可能存在一些nginx:nginx(UID GID不匹配)问题。
但实际上,它放弃了时间。不值得花时间解决它,我的主机提供商也不会打电话给RHEL6来询问它。