প্রথমত, আপনার এখানে একটি সমস্যা রয়েছে Dockerfile
:
RUN service mysql restart && /tmp/setup.sh
ডকার চিত্রগুলি চলমান প্রক্রিয়াগুলি সংরক্ষণ করে না। সুতরাং, আপনার RUN
কমান্ড কেবল docker build
পর্বের সময় কার্যকর হয় এবং বিল্ডটি সমাপ্ত হওয়ার পরে বন্ধ হয়ে যায়। পরিবর্তে, ধারকটি নীচের মত CMD
বা ENTRYPOINT
কমান্ড ব্যবহার করে শুরু করার সময় আপনাকে কমান্ডটি নির্দিষ্ট করতে হবে :
CMD mysql start
দ্বিতীয়ত, ডকার পাত্রে চালিয়ে যেতে একটি প্রক্রিয়া (শেষ কমান্ড) প্রয়োজন, অন্যথায় ধারকটি প্রস্থান / প্রস্থান করবে। সুতরাং service mysql start
ডকফাইলে সরাসরি কমান্ড ব্যবহার করা যায় না।
সমাধান
প্রক্রিয়াটি চালিয়ে যাওয়ার জন্য তিনটি সাধারণ উপায় রয়েছে:
আউটপুটযুক্ত লগটি ডকারে অ্যাক্সেসযোগ্য করে তোলে কারণ আপনার একক পরিষেবা চলমান থাকলে এটি প্রায়শই পছন্দ করা হয়।
স্ক্রিপ্টের মতো হলেই এটি কাজ করে mysqld_safe
।
কমান্ডটি অবশ্যই /start.sh
চলমান থাকা উচিত , যদি কমান্ডটি অবশ্যই কয়েকটি ধাপ অনুসরণ করে This
বিঃদ্রঃ
শিক্ষানবিসের জন্য ব্যবহারের supervisord
পরামর্শ দেওয়া হয় না। সত্য, এটি ওভারকিল। ধারকটির জন্য একক পরিষেবা / একক কমান্ড ব্যবহার করা আরও ভাল।
বিটিডাব্লু: অনুগ্রহ করে রেফারেন্সের জন্য বিদ্যমান মাইএসকিএল ডকার চিত্রের জন্য দয়া করে https://registry.hub.docker.com দেখুন