मैं डॉकर के साथ खेल रहा हूं और उपयोगिता बनाने और नियम लिखने का प्रयास करता हूं जो डॉकरफ़ाइल परिवर्तन पर केवल डॉकर छवि का पुनर्निर्माण करता है।
मेरे परियोजना संरचना लगता है:डॉकर बनाने के साथ: डॉकरफ़ाइल परिवर्तन पर छवि बनाएं
tree .
.
├── Dockerfile
├── Makefile
└── project
└── 1.js
मेरे Dockerfile बहुत सरल है:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup | sudo bash -
RUN apt-get update
RUN apt-get install -y build-essential nodejs
VOLUME ["/project"]
ENTRYPOINT ["cat"]
CMD ["project/1.js"]
यह सिर्फ NodeJS स्थापना के साथ सरल ubuntu छवि बनाता है और साझा निर्देशिका से एक स्क्रिप्ट चलाने।
अब मैं मेकफ़ाइल से इस छवि को चलाने के लिए चाहता हूं। जब मैं डॉकरफ़ाइल बदलता हूं तो मैं छवि को पुनर्निर्माण करना चाहता हूं।
default: run
run: build
docker run -v $(CURDIR)/project:/project app-server
build: Dockerfile
docker build -t app-server .
अब जब मैं sudo make
आदेश पर अमल यह एक छवि हर बार पुनर्निर्माण: Makefile तरह दिखता है।
डॉकरफ़ाइल बदलते समय केवल बिल्ड कार्य निष्पादित करने के लिए मैं कैसे मजबूर कर सकता हूं?
पर कुछ दिशा निर्देश पोस्ट किया है –
आप शायद ऐसा करने की जरूरत नहीं है आप वास्तव में https://docs.docker.com/articles/dockerfile_best-practices/ पर एक नजर है चाहिए। 'डॉकर बिल्ड' आंतरिक रूप से इस प्रकार के निर्भरता परिवर्तन को प्रबंधित करता है ताकि मूल रूप से वही प्रभाव हो जिसे आप 'मेक' के साथ प्राप्त करने का प्रयास कर रहे हैं। यदि आपको स्थिति देखने की आवश्यकता नहीं है, तो आप '--quiet' विकल्प का उपयोग'>/dev/null' के साथ कर सकते हैं। – nobar