Docker: Dockerfile में RUN mkdir को निष्पादित नहीं कर सकता


116

डोकर छवि बनाते समय यह एक त्रुटि संदेश है जो मुझे मिलता है:

चरण 18: RUN mkdir / var / www / app && chown luqo33: www-data / var / www / app ---> 7b5854406120 mkdir में चल रहा है: निर्देशिका 'var / www / app' नहीं बना सकता: ऐसी कोई फ़ाइल या निर्देशिका नहीं

यह Dockerfile का एक टुकड़ा है जो त्रुटि का कारण बनता है:

FROM ubuntu:14.04
RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33

<installing nginx, fpm, php and a couple of other things>

RUN mkdir /var/www/app && chown luqo33:www-data /var/www/app
VOLUME /var/www/app
WORKDIR /var/www/app

"mkdir: निर्देशिका नहीं बना सकता '/ var / www / app': ऐसी कोई फ़ाइल या निर्देशिका नहीं है" ध्वनि इतनी निरर्थक है - बेशक ऐसी कोई निर्देशिका नहीं है। मैं इसे बनाना चाहता हूं। यहाँ क्या गलत है?


4
यहां कुछ भी डॉक-स्पेसिफिक नहीं है, btw - आपके पास mkdir /var/www/appसिस्टम पर चलने वाली वही समस्या होगी जो /var/wwwइसके बिना नहीं थी।
— चार्ल्स डफी

जवाबों:


178

समस्या यह है कि /var/wwwया तो मौजूद नहीं है, और mkdirडिफ़ॉल्ट रूप से पुनरावर्ती नहीं है - यह तत्काल माता-पिता निर्देशिका के अस्तित्व की उम्मीद करता है।

उपयोग:

mkdir -p /var/www/app

... या एक पैकेज स्थापित /var/wwwकरें जो आपके डॉकरफाइल में इस बिंदु तक पहुंचने से पहले बनाता है ।


इस पर ध्यान दिलाने के लिए धन्यवाद। वैसे, आपको किस पैकेज से मतलब होगा /var/www?
— luqo33

यह Ubuntu 14.04 पैकेजिंग के बारे में एक प्रश्न है; मैं वहां विशेषज्ञ नहीं हूं।
— चार्ल्स डफी

60

गैर-मौजूदा पेरेंट डायरेक्टरी (एस) से लटके हुए उपनिर्देशिकाएँ बनाते समय आपको -pफ़्लैग को पास करना होगा mkdir... कृपया अपना डॉक्यूफ़र अपडेट करें

RUN mkdir -p ... 

मैंने इसका परीक्षण किया और यह सही है।


17

आप भी बस उपयोग कर सकते हैं

WORKDIR /var/www/app

यदि वे मौजूद नहीं हैं तो यह स्वचालित रूप से फ़ोल्डर बना देगा।

फिर उस निर्देशिका में वापस जाएं, जिसमें आपको होना चाहिए।


-1

पिछले उपयोग के मामलों के अलावा, आप उन डॉक्स कंपोज़ का भी उपयोग कर सकते हैं, जिन पर आप नए डमी फ़ोल्डर बनाना चाहते हैं docker-compose up:

    volumes:
  - .:/ftp/
  - /ftp/node_modules
  - /ftp/files

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