2016-01-22 16 views
5

मेरे पास डॉकर-कंपोज़ के साथ डॉकर के लिए एक सिम्फनी सेटअप है जो कि मैं कैश चलाने के अलावा अच्छी तरह से काम कर रहा हूं: कंसोल से साफ़ करें, वेबसर्वर फ़ाइलों तक पहुंच नहीं सकता है।कैश फाइलों के लिए सिम्फनी डॉकर अनुमति की समस्या

मैं उमास्क (0000) को असम्बद्ध करके अनुमति समस्या को बाधित कर सकता हूं; कंसोल और वेब/app_dev.php में लेकिन मैं सिम्फनी को अनुशंसित करना चाहता हूं।

मैं क्या करता हूं कंटेनर docker-compose up
तब मैं कंटेनर दर्ज करता हूं। कंटेनर में डेटा वॉल्यूम के माध्यम से अपाचे, PHP और कोड होता है।

docker exec -i -t apache_1 /bin/bash 

जाहिर है मैं तो रूट के रूप में लॉग-इन कर रहा हूँ और जब मैं कैश में

app/console cache:clear 

सभी फाइलों को चलाने के उपयोगकर्ता रूट के हैं। webs -ver उपयोगकर्ता के रूप में www-data अब फ़ाइलों तक पहुंच नहीं सकते हैं।

मैं www-data के रूप में लॉग इन करके इसे कैश द्वारा उत्पन्न फ़ाइलों को अवरुद्ध कर सकता हूं: स्पष्ट www-data से संबंधित है और वेबसर्वर उन्हें एक्सेस कर सकता है।

docker exec -u www-data -i -t apache_1 /bin/bash 

लेकिन इस नकारात्मक पक्ष यह है कि मैं पार्टी में लेकिन /usr/sbin/nologin में न जमीन और न bash_history तरह बातें और इतने पर है है।

चारों ओर खोजना मुझे अनुमति समस्या को हल करने के लिए डॉकरफ़ाइल के हिस्से के रूप में मिला लेकिन यह मेरे लिए कोई प्रभाव नहीं था।

RUN usermod -u 1000 www-data 

तो मुझे समझ को सही इस www-डेटा पर उपयोगकर्ता 1000 स्विच है, लेकिन जैसा कि मैंने जड़ कर रहा हूँ जब मैं कंटेनर यह काम नहीं करता के लिए लॉग इन, मैं मान।

तो क्यों कर रहा हूँ मैं जड़ जब मैं कंटेनर के लिए लॉग इन और कैसे इस usermod काम करने के लिए लगता है कि है?

डोकर-compose.yml:

proxy: 
    image: jwilder/nginx-proxy:latest 
    volumes: 
    - /var/run/docker.sock:/tmp/docker.sock:ro 
    ports: 
    - "80:80" 
elastic: 
    build: docker/elasticsearch 
    ports: 
    - "9200:9200" 
    volumes: 
    - data/elasticsearch:/usr/local/elasticsearch/data 
apache: 
    build: docker/apachephp 
    environment: 
    - VIRTUAL_HOST=myapp.dev 
    volumes: 
    - ./code:/var/www/app 
    - ./dotfiles/.bash_history:/.bash_history 
    - ./logs:/var/www/app/app/logs 
    links: 
    - elastic 
    expose: 
    - "80" 
+0

http://symfony.com/doc/current/book/installation.html#book-installation-permissions – malcolm

+0

मुझे डर है chmod + a ubuntu में उपलब्ध नहीं है और setfacl डिफ़ॉल्ट डॉकर सेटअप – ivoba

+0

के साथ काम नहीं कर रहा है कृपया अपने डॉकर-compose.yml जोड़ें? – Snroki

उत्तर

4

मैं अपने मेजबान उपयोगकर्ता की आईडी पर www-data रों userid बदलते लगता है कि, एक अच्छा समाधान है के रूप में मेजबान उपयोगकर्ता के लिए अनुमतियाँ काफी सेटअप करने के लिए आसान है।

#change www-data`s UID inside a Dockerfile 
RUN usermod -u [USERID] www-data 

उपयोगकर्ता ID 1000 मैक
पर सबसे Linux सिस्टम के लिए afaik ... 501 डिफ़ॉल्ट आप पता लगाने के लिए मेजबान सिस्टम पर id -u चला सकते है।

फिर आप www-डेटा के रूप में सिम्फोनी आदेशों को चलाने के लिए

docker exec -it -u www-data [CONTAINER] bash

मैं सोच रहा था कि कैसे आप कंटेनर निर्माण पर गतिशील रूप से उपयोगकर्ता आईडी सेट कर सकते हैं कंटेनर में लॉग इन कर सकते हैं।डोकर-लिखें सुविधा पर मैं --build-arg के माध्यम से इसे पारित लगता है जिस तरह से

docker-compose build --build-arg USERID=$(id -u) 

होगा ... लेकिन अभी तक Dockerfile में है कि वर का उपयोग करने में कामयाब रहे नहीं किया है।

+0

का उपयोग कर: जड़: 0 www-डेटा: 33 ubuntu: 1000 –

+0

धन्यवाद, के रूप में कंटेनर रों बैश में प्रवेश www- डेटा काम करता है। अन्य सभी के लिए, इस तरह की समस्याओं के बारे में हमारे सभी अनुभव https://github.com/nerdpress-org/docker-sf3 में गए, उम्मीद है कि यह मदद करता है ... – ivoba

संबंधित मुद्दे