2017-08-18 3 views
0

Sur mon mac je cours Windows Server 2016 dans VMware. Là je cours Ubuntu dans vagabond/boîte virtuelle. Là, j'essaie d'exécuter une application django dans un conteneur docker avec nginx/uwsgi.uwsgi dans docker dans vagrant dans vmware - socket non créé

uwsgi ne parvient pas à commencer par:

[uWSGI] getting INI configuration from /opt/django/CAPgraph/uwsgi.ini 
*** Starting uWSGI 2.0.15 (64bit) on [Thu Aug 17 20:01:23 2017] *** 
compiled with version: 6.4.0 20170805 on 17 August 2017 06:10:50 
os: Linux-3.13.0-128-generiC#177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017 
nodename: 37db4344b5ae 
machine: x86_64 
clock source: unix 
pcre jit disabled 
detected number of CPU cores: 1 
current working directory:/
detected binary path: /usr/local/bin/uwsgi 
uWSGI running as root, you can use --uid/--gid/--chroot options 
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
chdir() to /opt/django/CAPgraph/ 
your memory page size is 4096 bytes 
detected max file descriptor number: 524288 
lock engine: pthread robust mutexes 
thunder lock: disabled (you can enable it with --thunder-lock) 
bind(): Operation not permitted [core/socket.c line 230] 

Dans VMware le dossier est réglé pour le partage pour tout le monde avec l'autorisation d'écriture. Cela est monté dans la VM vagabonde où il est 777, et dans le conteneur docker il est aussi 777. Je peux créer des fichiers dans le répertoire de tous les 3 endroits. Mais il semble que uwsgi ne peut pas créer le socket.

J'ai essayé un court script python comme un test de errante et qui ne peut créer une socket soit:

[email protected]:/vagrant$ python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/vagrant/app.sock')" 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 1] Operation not permitted 

Quelqu'un sait comment je peux résoudre ce problème? MISE À JOUR: J'ai changé le répertoire en/tmp où je peux créer un socket avec mon script python, mais toujours uwsgi échoue avec la même erreur. MISE À JOUR 2: J'ai créé la socket dans/tmp avec mon script python, l'ai chmodée en 777 et j'ai toujours la même erreur depuis uwsgi.

+1

Le problème est que '/ vagagrant' n'est pas la même chose qu'un dossier normal. Si vous exécutez la commande 'mount | grep vagrant' vous trouverez qu'il utilise un système de fichiers 'vboxfs' et il ne se gélifie pas bien avec docker –

+0

Des suggestions sur la façon de contourner ce problème? –

+1

Utilisez un autre dossier que '/ vagagrant'. J'utilise habituellement '/ home/vagabonds' –

Répondre

2

Utilisez un autre dossier autre que /vagrant. J'utilise habituellement/home/vagabond

Le problème est que /vagrant n'est pas la même chose qu'un dossier normal. Si vous exécutez la commande mount | grep vagrant, vous trouverez qu'il utilise un système de fichiers vboxfs, qui pour une raison quelconque ne se gélifie pas bien avec docker