2015-12-31 8 views
26

मैं एक स्क्रिप्ट चलाने के लिए कोशिश कर रहा हूँ में एक स्क्रिप्ट चलाएँ। लेकिन ऐसा लगता है कि यह काम नहीं करता है।मेरी Dockerfile में मेरी इमारत की प्रक्रिया के दौरान Dockerfile

FROM php:7-fpm 
ADD bootstrap.sh/
ENTRYPOINT ["/bin/bash", "/bootstrap.sh"] 

इस तरह से भी:

मुझे लगता है कि जिस तरह से करने की कोशिश की

FROM php:7-fpm  
ADD bootstrap.sh/
RUN bash -c "/bootstrap.sh" 

और यह भी मेरे चल कंटेनर को क्रियान्वित करने बू:

docker exec symfony /bin/bash -c "/bootstrap.sh" 

कुछ भी नहीं काम करने के लिए लगता है।

आप इसे कैसे करना जानते हैं?

+0

फ़ाइल नाम सही है शुरू करते ही? –

+0

हाँ फ़ाइल का नाम सही है – Kevin

+0

क्या 'bootstarp.sh' निष्पादन योग्य बिट सेट है? – jwodder

उत्तर

34

RUN और ENTRYPOINT एक स्क्रिप्ट निष्पादित करने के लिए दो अलग-अलग तरह से कर रहे हैं।

RUN का अर्थ है कि यह एक मध्यवर्ती कंटेनर बनाता है, स्क्रिप्ट चलाता है और उस कंटेनर की नई स्थिति को एक नई मध्यवर्ती छवि में स्थिर करता है। इसके बाद स्क्रिप्ट नहीं चलाई जाएगी: आपकी अंतिम छवि उस स्क्रिप्ट के परिणाम को प्रतिबिंबित करने वाली है।

ENTRYPOINT अपनी छवि (जो अभी तक स्क्रिप्ट के निष्पादित नहीं किया गया है) का अर्थ है एक कंटेनर बनाने जाएगा, और है कि स्क्रिप्ट चलाता है।

दोनों मामलों में, स्क्रिप्ट जोड़े जाने की जरूरत है, और एक RUN chmod +x /bootstarp.sh एक अच्छा विचार है।

यह भी साथ शुरू करना चाहिए एक shebang (जैसे #!/bin/sh)

ध्यान में रखते हुए अपनी स्क्रिप्ट (KevinRaimbaud/docker-symfony/docker/php/bootstarp.sh: git config --global आदेशों की एक जोड़ी), यह आपके Dockerfile में एक बार है कि स्क्रिप्ट चलाने के लिए सबसे अच्छा होगा, लेकिन उपयोग सुनिश्चित करते हुए

RUN /bootstart.sh 

: सही उपयोगकर्ता

your Dockerfile में जोड़े (। वैश्विक Git कॉन्फ़िग फ़ाइल% गृह%/gitconfig, जो डिफ़ॉल्ट रूप से/जड़ से एक है) फिर, कंटेनर चलाते समय, स्क्रिप्ट चलाने की पुष्टि करने के लिए /root/.gitconfig की सामग्री की जांच करें।ADD कमान और निर्देशिका काम कर रहे इस तरह के विनिर्देशन के साथ स्क्रिप्ट बनाने के लिए

+3

इसके अलावा, हो सकता है कि आप 'bootstarp.sh' के बजाय' bootstrap.sh' का अर्थ हो: http://stackoverflow.com/a/1254561/6309 – VonC

+0

कूल देखें! RUN /bootstrap.sh – Kevin

+0

के साथ बहुत अच्छी तरह से काम करता है पहली पंक्ति में शेबांग ने मेरे लिए यह किया, धन्यवाद! :) – GDICommander

14

प्रयास ("स्क्रिप्ट" स्क्रिप्ट का नाम है और /root/script.sh है जहां आप इसे कंटेनर में चाहते हैं, यह अलग रास्ता हो सकता है:

ADD script.sh /root/script.sh 
यदि आप एक BTW यह मेजबान मशीन से कंटेनर में किसी भी स्थान पर स्क्रिप्ट आयात करने के लिए

CMD जगहमें अच्छा तरीका है है

इस मामले ADD में, CMD से पहले आने के लिए है

यह स्वचालित रूप से अपनी स्क्रिप्ट पर अमल करना चाहिए

तुम भी WORKDIR/root के रूप में निर्दिष्ट कर सकते हैं, तो you'l स्वचालित रूप से जड़ में, रखा जाना एक कंटेनर

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