【发布时间】:2021-10-18 20:30:12
【问题描述】:
这太奇怪了……我有一个运行 Web 应用程序的 docker 映像。当我运行它时,容器中什么都没有显示……没有错误。 docker ps -a 下什么都没有。
我运行 docker events& 又试了一次,它报错 1... 这显然是一个应用程序错误,好的。
所以,我重新运行为:
docker run -it --entrypoint /bin/bash -p 80:80 --name NAME -d 名称:最新的-s
然后运行runall.sh中的每一项
前三个项目给了一个权限被拒绝:
uwsgi --http-socket 127.0.0.1:3009 --file /var/www/cgi-bin/tireorder/main.wsgi --processes 1 --uid root --enable-threads -b 32768 --daemonize /var/www/cgi-bin/tireorder/tireorder.log --pidfile /var/www/cgi-bin/tireorder/tireorder.pid
查了一下,貌似是用户权限,但是所有目录和文件都是root权限。
真正奇怪的是,我让它在 windows 和 mint linux 虚拟机中运行……但在生产中(RHEL)或我的 linode 虚拟机(Centos 8、Debian 10、Ubuntu 21)上提供了相同的权限拒绝!?
这是 docker 文件。
FROM lovato/python-2.6.6:latest
WORKDIR /
COPY trotta.tar.gz /
COPY runall.sh /
RUN chmod ugo+x runall.sh
RUN apt-get update
RUN apt-get install haproxy python python-pip python-dev nginx python-paste python-pastewebkit python-babel -y
RUN ["tar", "-xvzf", "trotta.tar.gz"]
RUN ["rm", "/etc/nginx/sites-enabled/default"]
RUN ["cp", "-R", "/usr/lib/python2.6/site-packages/Muntjac-1.1.2-py2.6.egg/muntjac", "/usr/lib/python2.7/dist-packages/"]
COPY uwsgi /usr/local/bin/
COPY /etc/default.conf /etc/nginx/conf.d/
COPY /etc/tireorder.conf /etc/
CMD ./runall.sh
这里是runall.sh:
uwsgi --http-socket 127.0.0.1:3009 --file /var/www/cgi-bin/tireorder/main.wsgi --processes 1 --uid root --enable-threads -b 32768 --daemonize /var/www/cgi-bin/tireorder/tireorder.log --pidfile /var/www/cgi-bin/tireorder/tireorder.pid
uwsgi --http-socket 127.0.0.1:3310 --file /var/www/cgi-bin/tireorder2/main.wsgi --processes 1 --uid root --enable-threads -b 32768 --daemonize /var/www/cgi-bin/tireorder2/tireorder.log --pidfile /var/www/cgi-bin/tireorder2/tireorder.pid --chdir /var/www/cgi-bin/tireorder2
uwsgi --http-socket 127.0.0.1:3610 --file /var/www/cgi-bin/tireorder3/main.wsgi --processes 1 --uid root --enable-threads -b 32768 --daemonize /var/www/cgi-bin/tireorder3/tireorder.log --pidfile /var/www/cgi-bin/tireorder3/tireorder.pid --chdir /var/www/cgi-bin/tireorder3
service nginx start
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
tail -f /var/www/cgi-bin/tireorder/tireorder.log &
tail -f /var/www/cgi-bin/tireorder2/tireorder.log &
tail -f /var/www/cgi-bin/tireorder3/tireorder.log
【问题讨论】:
-
请edit 发帖并包含 dockerfile。 --- 在生产系统上,你是否激活了 SELinux?
-
请同时包含
runall.sh-script。 --- 据我所知,您复制了uwsgi二进制文件,但不使其可执行。假设它是可执行的,接下来的问题是: - 在 dockerfile 中设置了什么用户? -/var/www/cgi-bin/tireorder的内容是什么,这个目录的权限是什么? -
更新了 docker 文件和 runall。仅供参考...我对 docker 很陌生。
-
我以 root 身份构建所有内容。
-
这里是构建:docker build --no-cache -t trotta:latest -f Dockerfile。
标签: docker permissions wsgi