Condivisione socket unix tramite volume finestra mobile - autorizzazione negata


18

Provo a condividere il mio php5-fpmsocket tramite un volume con il mio nginxserver web. Fpm e nginx sono in esecuzione in contenitori diversi e voglio farli funzionare tramite un volume condiviso in cui inserisco il file socket da fpm.

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"

Ho già provato a installare i permessi a 777 e cambiando il gruppo di php5-fpm.socketal www-data.

Dockerfile del contenitore fpm

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi

ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini

CMD ["/usr/sbin/php5-fpm"]

Dockerfile del contenitore nginx

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y nginx

ADD ./test.php /var/test/test.php
ADD ./test.html /var/test/test.html
ADD ./nginx.conf /etc/nginx/nginx.conf
ADD ./site /etc/nginx/sites-enabled/test

EXPOSE 80

CMD ["/usr/sbin/nginx"]

Posso accedere al test.htmlma quando accedo test.phpottengo 502 Bad Gateway.

C'è qualcos'altro di cui mi devo preoccupare per le autorizzazioni quando condivido contenuti tramite volumi?


Come stai iniziando questi contenitori?
cpuguy83,

Controllare le autorizzazioni sulla directory contenente .
Aryeh Leib Taurog

Risposte:



12

Ora è il 2015 e presumo che la patch del kernel menzionata da Michael sia ora entrata nel kernel stabile. Ho un esempio funzionante di 2 contenitori docker uno con php-fpm e l'altro con nginx che parlano tra loro tramite un socket unix.

Vedi: https://github.com/brad-jones/conductor/tree/master/example-project

La chiave per farlo funzionare era aprire le autorizzazioni sul socket.

Ad esempio: listen.mode = 0777in /etc/php-fpm.d/www.conf

Non sembrava importare a cosa erano stati impostati hear.owner & Listen.group. Il socket doveva essere completamente illimitato, immagino perché un utente in un contenitore, anche se ha lo stesso nome in un altro contenitore, è ancora considerato un utente diverso.


5
Nella mia esperienza limitata, la finestra mobile non è in grado di effettuare ricerche di nomi per gli utenti, o piuttosto questo non tiene conto dell'architettura di containerizzazione. sembra che l'UID dell'utente nel contenitore sia tutto ciò che conta. Se si tenta di eseguire nuovamente il test con autorizzazioni limitate, assicurarsi che l'UID corrisponda all'interno e all'esterno del contenitore.
ThorSummoner,

0

AGGIUNGI ./test.php /var/test/test.php nel contenitore fpm

Php deve essere interpretato per essere visualizzato, giusto?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.