डॉक वॉल्यूम के माध्यम से यूनिक्स सॉकेट को साझा करना - अनुमति से वंचित


18

मैं php5-fpmअपने nginxवेबसर्वर के साथ वॉल्यूम के माध्यम से अपने सॉकेट को साझा करने का प्रयास करता हूं । Fpm और nginx विभिन्न कंटेनरों में चल रहे हैं और मैं उन्हें एक साझा वॉल्यूम के माध्यम से काम करना चाहता हूं जहां मैं 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"

मैं पहले से ही 777 करने के लिए अनुमति की स्थापना और के समूह को बदलने की कोशिश की php5-fpm.socketकरने के लिए www-data

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"]

नग्नेक्स कंटेनर के डॉकरीफाइल

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"]

मैं एक्सेस कर सकता हूं test.htmlलेकिन एक्सेस करते समय test.phpमुझे 502 बैड गेटवे मिलते हैं।

क्या वॉल्यूम के माध्यम से सामान साझा करते समय मुझे कुछ और अनुमति लेनी होगी?


आप इन कंटेनरों को कैसे शुरू कर रहे हैं?
cpuguy83

युक्त निर्देशिका पर अनुमतियों की जाँच करें ।
आर्येह लीब तौरोग

जवाबों:


5

जब वे अलग-अलग नेटवर्क नेमस्पेस में होते हैं, तो विभिन्न कंटेनर UNIX डोमेन सॉकेट के माध्यम से एक दूसरे से बात नहीं कर सकते हैं। एक अनौपचारिक कर्नेल पैच है जो इसे अनुमति देता है, लेकिन यदि आप इसका उपयोग करते हैं तो आप अपने दम पर हैं।


12

इसकी अब 2015 और मुझे लगता है कि कर्नेल पैच माइकल उल्लेख अब यह स्थिर कर्नेल में रास्ता बना दिया है। मेरे पास php-fpm के साथ 2 डॉकटर कंटेनरों में से एक का काम करने का उदाहरण है और दूसरे में नगीनेक्स एक यूनिक्स सॉकेट के माध्यम से बात कर रहे हैं।

देखें: https://github.com/brad-jones/conductor/tree/master/example-project

इसके लिए काम करने की कुंजी हालांकि सॉकेट पर अनुमतियों को खोलना था।

उदाहरण के लिए: listen.mode = 0777में /etc/php-fpm.d/www.conf

इस बात से कोई फर्क नहीं पड़ता था कि सुनता है। सॉकेट को पूरी तरह से अप्रतिबंधित करने की आवश्यकता है, मुझे लगता है क्योंकि एक कंटेनर में एक उपयोगकर्ता, भले ही इसका नाम दूसरे कंटेनर में हो, फिर भी एक अलग उपयोगकर्ता माना जाता है।


5
मेरे सीमित अनुभव में डॉक उपयोगकर्ता के लिए नाम लुकअप करने में सक्षम नहीं है, या बल्कि यह कि कंटेनरीकरण वास्तुकला में कारक नहीं है। ऐसा लगता है कि कंटेनर में उपयोगकर्ता का यूआईडी यह सब मायने रखता है। यदि आप प्रतिबंधित अनुमतियों के साथ फिर से परीक्षण करने का प्रयास करते हैं, तो सुनिश्चित करें कि कंटेनर के अंदर और बाहर यूआईडी का मेल है।
थोरसुमोनर

0

Fpm कंटेनर में ADD ./test.php /var/test/test.php

Php को प्रदर्शित करने के लिए व्याख्या की जानी चाहिए, है ना?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.