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.