تشغيل أوسجي مع المشرف في حاوية عامل الميناء هو إعطاء إذن رفض

لدي التطبيق جانغو التي أريد تشغيلها مع وسجي في حاوية عامل الميناء باستخدام المشرف.

أنا باستخدام أوسك حتى لتركيب بنجاح بلدي نظام الملفات أوسك داخل بلدي boot2docker فم (حتى أتمكن من تحميل وحدات التخزين مع عامل الميناء run -v /source/:/destination) لقد كان لاستخدام sshfs وهو ما أعتقد أنه يسبب بعض الأذونات الغريبة على نظام الملفات المثبت.

لدي اثنين يتصاعد على بلدي boot2docker فم ؛ واحد يشير إلى بلدي كودباس التطبيقات واحد يشير إلى موقع تعسفي على مضيفي لكتابة سجلات مستمرة ل

Host: /Users/username/workspace/project --- > boot2docker: /home/docker/osxHost: /containers/project               --- > boot2docker: /containers/project

أبدأ حاوية عامل الميناء مع:

docker run -t -i -p 80 -v /home/docker/osx/project/www:/var/www -v /containers/project:/host image-name /bin/bash

يبدو تكوين المشرف الخاص بي لتطبيقي كما يلي:

[program:app_name]command=uwsgi --ini /var/www/wsgi/uwsgi.inidirectory=/var/wwwautostart=trueautorestart=truestdout_logfile=/host/logs/app-name.logredirect_stderr=True

بلدي usgi.ini يبدو مثل هذا:

[uwsgi]http = :3041chdir = /var/wwwmodule = run.wsgiuid = www-datagid = 33master = Trueprocesses = 4threads = 1pidfile = /var/run/uwsgi.pidtouch-reload = /var/run/uwsgi.pidlogto = /host/logs/uwsgi.log

عند تشغيل التطبيق الخاص بي مع سوبيرفيسوركتل أحصل على الأخطاء التالية:

root@4237fd060a40:/var/www# supervisorctlapp_name               FATAL      Exited too quickly (process log may have details)supervisor> start app_name2014-06-15 10:22:16,559 INFO spawned: 'app_name' with pid 1052014-06-15 10:22:16,633 INFO exited: app_name (exit status 1; not expected)2014-06-15 10:22:17,658 INFO spawned: 'app_name' with pid 106app_name: ERROR (abnormal termination)

وفي سجلات وسجي أرى:

[uWSGI] getting INI configuration from /var/www/run/uwsgi.ini*** Starting uWSGI 1.9.10 (64bit) on [Sun Jun 15 10:22:22 2014] ***compiled with version: 4.6.3 on 13 June 2014 15:25:05os: Linux-3.14.1-tinycore64 #1 SMP Mon Jun 9 16:21:23 UTC 2014nodename: 4237fd060a40machine: x86_64clock source: unixdetected number of CPU cores: 4current working directory: /var/wwwwriting pidfile to /var/run/uwsgi.piddetected binary path: /usr/local/bin/uwsgisetgid() to 33setuid() to 33chdir(): Permission denied [core/uwsgi.c line 2121]

تشغيل id -g www-data يظهر لي أن دائرة المخابرات العامة الخاصة بي على حق وأن www-data موجود:

root@4237fd060a40:/var/www# id -g www-data33

وداخل حاوية عامل الإرساء الخاصة بي ، تبدو أذونات الملف التي أراها كما يلي:

root@4237fd060a40:/var/www# lltotal 76drwxr-xr-x  1 10133 10000   578 Jun 15 09:55 ./drwxr-xr-x 30 root  root   4096 Jun 15 09:52 ../drwxr-xr-x  1 10133 10000   714 Jun 13 10:55 some_folder/drwxr-xr-x  1 10133 10000  1292 Jun  9 11:29 some_file.py

لذلك لأنني أرى uidق و gidهنا ، وتعود ملكية الملفات / المجلدات من قبل المستخدم الذي لا وجود له (أنها تتطابق مع بلدي المضيف أوسك أسماء المستخدمين uid و gid) ، وأحصل على أخطاء الإذن أعلاه لأن www-data لا يستطيع المستخدم الوصول إلى الكتابة إلى نظام الملفات المثبت ، والذي يمكنني إثبات استخدامه su:

root@4237fd060a40:/var/www# su www-data$ pwd/var/www$ touch test2touch: cannot touch `test2': Permission denied

من المنطقي حتى الآن ، ولكن عندما أحاول وكتابة ملف كجذر:

root@4237fd060a40:/var/www# touch testroot@4237fd060a40:/var/www# lltotal 76...-rw-r--r--  1 10133 10000     0 Jun 15 10:20 test

كتابة ملف يعمل بشكل جيد ، وحتى لديه الحق uid و gid.

لذلك ، كنت أتوقع تشغيل وسجي كجذر مع هذا uwsgi.ini الملف:

[uwsgi]http = :3041chdir = /var/wwwmodule = run.wsgiuid = rootgid = 10000master = Trueprocesses = 4threads = 1pidfile = /var/run/uwsgi.pidtouch-reload = /var/run/uwsgi.pidlogto = /host/logs/uwsgi.log

أو 10133 مع هذا uwsgi.ini الملف:

[uwsgi]http = :3041chdir = /var/wwwmodule = run.wsgiuid = 10133gid = 10000master = Trueprocesses = 4threads = 1pidfile = /var/run/uwsgi.pidtouch-reload = /var/run/uwsgi.pidlogto = /host/logs/uwsgi.log

سوف تعمل ، ولكن أنا الحصول على أي حب:

[uWSGI] getting INI configuration from /var/www/run/uwsgi.ini*** Starting uWSGI 1.9.10 (64bit) on [Sun Jun 15 10:30:05 2014] ***compiled with version: 4.6.3 on 13 June 2014 15:25:05os: Linux-3.14.1-tinycore64 #1 SMP Mon Jun 9 16:21:23 UTC 2014nodename: 4237fd060a40machine: x86_64clock source: unixdetected number of CPU cores: 4current working directory: /var/wwwwriting pidfile to /var/run/uwsgi.piddetected binary path: /usr/local/bin/uwsgisetgid() to 10000*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***chdir(): Permission denied [core/uwsgi.c line 2121]

و

[uWSGI] getting INI configuration from /var/www/run/uwsgi.ini*** Starting uWSGI 1.9.10 (64bit) on [Sun Jun 15 10:30:36 2014] ***compiled with version: 4.6.3 on 13 June 2014 15:25:05os: Linux-3.14.1-tinycore64 #1 SMP Mon Jun 9 16:21:23 UTC 2014nodename: 4237fd060a40machine: x86_64clock source: unixdetected number of CPU cores: 4current working directory: /var/wwwwriting pidfile to /var/run/uwsgi.piddetected binary path: /usr/local/bin/uwsgiuWSGI running as root, you can use --uid/--gid/--chroot optionssetgid() to 10000setuid() to 10133chdir(): Permission denied [core/uwsgi.c line 2121]

ما أنا في عداد المفقودين?

كنت أرى الإذن نفى الأخطاء هنا لأن guid لم تكن موجودة داخل الحاوية.

تغيير الخط guid=10000 إلى guid=root أصلحه.

مسكتك. إذا لم تكن قد اشتركت بالفعل في docker volumes w remote daemon · Issue #4023 · moby/moby · GitHub ، قد ترغب في التحقق من ذلك.

هل حاولت نسخ / رسينسينغ البيانات الخاصة بك إلى المضيف بوت2دوكر للقضاء على سشفس كمصدر للمشكلة?

مرحبا أندي ، نعم لقد فكرت في القيام بذلك ولكن أنا بحاجة إلى أن يكون نظام الملفات التي شنت لتمكين “التحرير المباشر” من قاعدة التعليمات البرمجية للتنمية. الحاجة إلى إنشاء صورة جديدة في كل مرة يتم فيها تغيير بعض التعليمات البرمجية غير مقبول بالنسبة لي.

وعندما أقول" التحرير المباشر " ، أعني أن مستخدمي الحاوية قادرون على التطور في بيئة المضيف الخاصة بهم ورؤية التغييرات على قاعدة التعليمات البرمجية المنعكسة في متصفحهم على الفور.