2014-11-06 13 views
8

मुझे कोई समस्या नहीं है जहां उपयोगकर्ता user1 कंटेनर में जारी नहीं है जिसे मैंने निम्नलिखित डॉकरफ़ाइल का उपयोग करके बनाया है। इसका कारण क्या है? क्या यह एक RabbitMQ विशिष्ट मुद्दा है? जैसे मैं स्पष्ट रूप से निर्दिष्ट है कि उपयोगकर्ता को कायम किया जाना चाहिएडॉकर में खरगोश एमक्यू - उपयोगकर्ता निर्माण

FROM dockerfile/rabbitmq 

# Define mount points. 
VOLUME ["/data/log", "/data/mnesia"] 

# Define working directory. 
WORKDIR /data 

RUN (rabbitmq-start &) && \ 
    sleep 10 && \ 
    rabbitmqctl add_user user1 password1 && \ 
    rabbitmqctl set_user_tags user1 administrator && \ 
    rabbitmqctl set_permissions -p/user1 ".*" ".*" ".*" && \ 
    sleep 10 && \ 
    rabbitmqctl stop && \ 
    sleep 10 
# Define default command. 
CMD ["rabbitmq-start"] 

# Expose ports. 
EXPOSE 5672 
EXPOSE 15672 
+0

क्या आपको इस मुद्दे का समाधान मिला? मैं वही चीज़ ढूंढ रहा हूं। – Marco

उत्तर

0

मैं ऐसी ही कुछ करना है और यह बनी रहती है:

RUN service rabbitmq-server start ; \ 
    rabbitmqctl add_vhost /sensu ; \ 
    rabbitmqctl add_user sensu sensu ; \ 
    rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*" ; \ 
    service rabbitmq-server stop 

क्या आप वाकई निर्माण प्रक्रिया पहली जगह में होता हैं? नींद और सबहेल इसे स्पष्ट नहीं करते हैं। समान

+0

हां, मैंने आपके कोड का उपयोग करके एक छवि बनाने का प्रयास किया है, और 'डॉकर exec -ti rmq rabbitmqctl list_users' का उपयोग कर उपयोगकर्ता की सूची का निरीक्षण किया है और नव निर्मित उपयोगकर्ता नहीं ढूंढ सका। क्या मैं कुछ भूल रहा हूँ? – lolski

+0

मैं बिल्कुल rabbitmq विशेषज्ञ नहीं हूँ, क्षमा करें। मैं संकेतों के लिए rabbitmq लॉग खोजने की कोशिश करता हूँ। – seanmcl

0

क्या लायक है के लिए, कुछ this dockerfile में किया जाता है, लेकिन मैं इसे लागू करने के लिए या तो नहीं मिल सकता है: इस समस्या के साथ आज

RUN /usr/sbin/rabbitmq-server -detached && \ 
    sleep 5 && \ 
    rabbitmqctl add_user bunnyuser my_pass1 && \ 
    rabbitmqctl add_user bunny-admin my_pass2 && \ 
    rabbitmqctl set_user_tags bunny-admin administrator && \ 
    rabbitmqctl set_permissions -p/bunnyuser ".*" ".*" ".*" 
+0

हाय। क्या आपको सही डॉकरफ़ाइल मिलती है जो एकाधिक accoundt और अनुमतियों को स्टोर करने की अनुमति देती है? –

13

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन संघर्ष घंटे के लिए और अंत में यह मेरे लिए हल किया गया: यह समस्या डॉकर के साथ हर नए कंटेनर में बदल रहे डिफ़ॉल्ट होस्टनाम के कारण होती है, और RabbitMQ वास्तव में होस्ट नाम पर कॉन्फ़िगरेशन को बांधता है।

मैं उपयोगकर्ता सेट करने से पहले /etc/rabbitmq/rabbitmq-env.conf में nodename चर सेट:

# make the node name static 
RUN echo '[email protected]' > /etc/rabbitmq/rabbitmq-env.conf 

और अब यह काम करता है।

उम्मीद है कि यह मदद कर सकता है।

संपादित करें:

यहाँ एक काम कर रहा है Dockerfile (कंटेनर में एक RabbitMQ-env.conf फ़ाइल कॉपी):

FROM ubuntu:latest 

RUN groupadd -r rabbitmq && useradd -r -d /var/lib/rabbitmq -m -g rabbitmq rabbitmq 

# add rabbitmq repo 
RUN apt-get update && \ 
apt-get install wget --assume-yes && \ 
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc && \ 
sudo apt-key add rabbitmq-signing-key-public.asc && \ 
sed -i -e '1ideb http://www.rabbitmq.com/debian/ testing main\' /etc/apt/sources.list && \ 
apt-get update && \ 
apt-get install rabbitmq-server --assume-yes 

# Enable plugins 
RUN rabbitmq-plugins enable rabbitmq_management && \ 
rabbitmq-plugins enable rabbitmq_web_stomp && \ 
rabbitmq-plugins enable rabbitmq_mqtt 

# expose ports 
# Management 
EXPOSE 15672 
# Web-STOMP plugin 
EXPOSE 15674 
# MQTT: 
EXPOSE 1883 


# configure RabbitMQ 
COPY ["rabbitmq-env.conf", "/etc/rabbitmq/rabbitmq-env.conf"] 
RUN chmod 755 /etc/rabbitmq/rabbitmq-env.conf 

# Create users for the apps 
COPY ["rabbitmq-setup.sh", "/tmp/rabbitmq/rabbitmq-setup.sh"] 
RUN mkdir /var/run/rabbitmq && \ 
chmod -R 755 /var/run/rabbitmq && \ 
chown -R rabbitmq:rabbitmq /var/run/rabbitmq && \ 
service rabbitmq-server start && \ 
sh /tmp/rabbitmq/rabbitmq-setup.sh && \ 
rm /tmp/rabbitmq/rabbitmq-setup.sh && \ 
service rabbitmq-server stop 

# start rabbitmq 
USER rabbitmq 
CMD ["rabbitmq-server", "start"] 

मेरे RabbitMQ-env.conf फ़ाइल:

[email protected] 

मेरा rabbitmq-setup.sh: बहुत से लोग अभी भी इस समस्या (मुझे सहित) कर रहे हैं

rabbitmqctl add_vhost myvhost && rabbitmqctl add_user myuser mypasswd && rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*" && rabbitmqctl set_user_tags myuser administrator 
+0

क्या आप अपना डॉकरफ़ाइल साझा कर सकते हैं? मैं एक ही समस्या के लिए समाधान ढूंढ रहा हूं। मेरे उपयोगकर्ता लगातार नहीं रहते हैं। – Marco

+0

@ मार्को: सुनिश्चित करें, मेरा संपादित उत्तर देखें;) आपको शायद आवश्यक पोर्ट्स का पर्दाफाश करना होगा और प्लगइन सक्षम/अक्षम करना होगा। – Ben

+0

ध्यान दें कि यदि आप विंडोज़ के साथ अपनी फाइलें उत्पन्न करते हैं तो आपको सावधान रहना होगा। सुनिश्चित करें कि सभी फाइलें केवल एलएफ लाइन के अंत का उपयोग करें। मुझे बस यह पता लगाने के लिए 1+ घंटे की आवश्यकता थी कि खरगोशक "लोकलहोस्ट \ आर" (rabbitmq-env.conf) नामक होस्टनाम की तलाश में था। – BlaM

0

वजह से, क्या मैंने किया था:

निर्माण में कम से RabbitMQ database_dir कॉपी/var/सभी उपयोगकर्ताओं को कॉन्फ़िगर करने के बाद lib/rabbitmq/mnesia/खरगोश \ @ $ (होस्टनाम)/रूट (सब कुछ/रूट रहता है)।

रनटाइम पर, डेटाबेस डीआईआर को वापस/रूट// var/lib/rabbitmq/mnesia से कॉपी करें।

केवल नुकसान: RabbitMQ में डेटाबेस में किए गए परिवर्तन रनटाइम पर रीसेट हो जाएंगे। हालांकि मुझे डॉकर-कंपोज़ के साथ ऐसा करने का कोई और तरीका नहीं मिला।

(Dockerfile में आदेश चला के रूप में) Configure.sh:

echo "[email protected]" > /etc/rabbitmq/rabbitmq-env.conf 
echo "127.0.0.1 message-bus" >> /etc/hosts #prevents error that 'message-bus' node doesnt exist (this doesnt persist in /etc/hosts) 
rabbitmqctl add user ... #etc 
rabbitmqctl stop 
mkdir /root/rabbitmq_database 
cp -R /var/lib/rabbitmq/mnesia/rabbit\@message-bus/* /root/rabbitmq_database 

रनटाइम।sh (डॉकरफाइल में एंट्रीपॉइंट के रूप में):

#copy database back from /root 
mkdir -p /var/lib/rabbitmq/mnesia/rabbit\@message-bus 
cp -R /root/rabbitmq_database/* /var/lib/rabbitmq/mnesia/rabbit\@message-bus 
rabbitmq-server 
संबंधित मुद्दे