में स्वचालित रूप से एक सेवा चलाएं मैं एक साधारण छवि स्थापित कर रहा हूं: एक जिसमें Riak (एक NoSQL डेटाबेस) है। छवि एक सीएमडी के रूप में riak start
के साथ Riak सेवा शुरू होती है। अब, अगर मैं इसे docker run -d quintenk/riak-dev
के साथ एक डिमन के रूप में चलाता हूं, तो यह रीक प्रक्रिया शुरू करता है (मैं लॉग में देख सकता हूं)। हालांकि, यह कुछ सेकंड के बाद स्वचालित रूप से बंद हो जाता है। अगर मैं docker run -i -t quintenk/riak-dev /bin/bash
का उपयोग कर इसे चलाता हूं तो दंगा प्रक्रिया शुरू नहीं होती है (अद्यतन: इसके लिए स्पष्टीकरण के लिए उत्तर देखें)। वास्तव में, कोई भी सेवा चल रही नहीं है। मैं इसे मैन्युअल रूप से टर्मिनल का उपयोग कर शुरू कर सकता हूं, लेकिन मैं Riak स्वचालित रूप से शुरू करना चाहता हूं। मुझे लगता है कि यह व्यवहार अन्य सेवाओं के लिए भी होगा, Riak सिर्फ एक उदाहरण है।एक डॉकर कंटेनर
तो, कंटेनर को चालू/पुनरारंभ करना स्वचालित रूप से Riak शुरू करना चाहिए। इसे स्थापित करने का सही तरीका क्या है?
संदर्भ के लिए, Dockerfile जिसके साथ छवि बनाई जा सकती है (अद्यतन: चुने हुए जवाब का उपयोग कर बदल):
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y openssh-server curl
RUN curl http://apt.basho.com/gpg/basho.apt.key | apt-key add -
RUN bash -c "echo deb http://apt.basho.com precise main > /etc/apt/sources.list.d/basho.list"
RUN apt-get update
RUN apt-get -y install riak
RUN perl -p -i -e 's/(?<=\{http,\s\[\s\{")127\.0\.0\.1/0.0.0.0/g' /etc/riak/app.config
EXPOSE 8098
CMD /bin/riak start && tail -F /var/log/riak/erlang.log.1
संपादित करें: अनुसार सीएमडी में -f करने के लिए बदल -f कुछ समय के लिए मैं डोकर साथ काम करने के बाद उनकी टिप्पणी sesm को
मेरी स्वयं का उत्तर
मेरी प्रक्रियाओं को ट्यून करने के लिए पर्यवेक्षक का उपयोग करने की आदत उठाई। यदि आप इसके लिए उदाहरण कोड चाहते हैं, तो https://github.com/Krijger/docker-cookbooks देखें। मैं अपनी सभी अन्य छवियों के लिए आधार के रूप में अपने पर्यवेक्षक छवि का उपयोग करता हूं। मैंने पर्यवेक्षक here का उपयोग करने पर ब्लॉग किया।
वैसे भी। मैं अब (विकास उद्देश्यों के लिए) कंटेनर का उपयोग करके इसे शुरू कर रहा हूं, इसे जोड़ रहा हूं, और फिर Riak कमांड लाइन शुरू कर रहा हूं। – qkrijger