আমি থেকে rabbitmq এবং একটি সহজ পাইথন নমুনা ব্যবহার করছি এখানে Docker-রচনা একসাথে। আমার সমস্যাটি হ'ল খরগোশ সম্পূর্ণরূপে শুরু হওয়ার জন্য আমাকে অপেক্ষা করতে হবে। আমি এতদূর যা অনুসন্ধান করেছি সেগুলি থেকে, y (খরগোশ) শুরু না হওয়া পর্যন্ত আমি ধারক x (আমার ক্ষেত্রে কর্মী) সাথে কীভাবে অপেক্ষা করব তা জানি না।
আমি এই ব্লগপোস্টটি পেয়েছি যেখানে তিনি অন্য হোস্টটি অনলাইনে আছে কিনা তা পরীক্ষা করে দেখেন । আমি এই ডকার কমান্ডটিও পেয়েছি :
অপেক্ষার
ব্যবহার: ডকার ওয়েট কন্টেইনার [কনটেনার ...]
কোনও ধারক থামার আগ পর্যন্ত অবরোধ করুন, তারপরে প্রস্থান কোডটি মুদ্রণ করুন।
কোনও ধারক থামার অপেক্ষায় থাকা আমি সম্ভবত যা খুঁজছি তা নয় তবে যদি তা হয় তবে ডকার-কমপোস.আইএমএল-এর ভিতরে কি এই আদেশটি ব্যবহার করা সম্ভব? এখনও অবধি আমার সমাধানটি হল কয়েক সেকেন্ড অপেক্ষা করা এবং বন্দরটি পরীক্ষা করা, তবে এটি কি এটি অর্জনের উপায় ?. আমি যদি অপেক্ষা না করি তবে আমি একটি ত্রুটি পেয়েছি।
Docker-compose.yml
worker:
build: myapp/.
volumes:
- myapp/.:/usr/src/app:ro
links:
- rabbitmq
rabbitmq:
image: rabbitmq:3-management
পাইথন হ্যালো নমুনা (খরগোশ.পি):
import pika
import time
import socket
pingcounter = 0
isreachable = False
while isreachable is False and pingcounter < 5:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('rabbitmq', 5672))
isreachable = True
except socket.error as e:
time.sleep(2)
pingcounter += 1
s.close()
if isreachable:
connection = pika.BlockingConnection(pika.ConnectionParameters(
host="rabbitmq"))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print (" [x] Sent 'Hello World!'")
connection.close()
কর্মী জন্য ডকফেরাইল:
FROM python:2-onbuild
RUN ["pip", "install", "pika"]
CMD ["python","rabbit.py"]
নভেম্বর 2015 আপডেট করুন :
একটি শেল স্ক্রিপ্ট বা আপনার প্রোগ্রামের মধ্যে অপেক্ষা করা সম্ভবত একটি সম্ভাব্য সমাধান। তবে এই ইস্যুটি দেখার পরে আমি ডকার / ডকার-কমপোজ নিজেই একটি আদেশ বা বৈশিষ্ট্য সন্ধান করছি।
তারা স্বাস্থ্য পরীক্ষার বাস্তবায়নের জন্য একটি সমাধান উল্লেখ করেছেন, এটি সেরা বিকল্প হতে পারে। একটি উন্মুক্ত টিসিপি সংযোগের অর্থ এই নয় যে আপনার পরিষেবা প্রস্তুত বা প্রস্তুত থাকতে পারে। এটি ছাড়াও আমার ডকস্পাইলে আমার প্রবেশপথটি পরিবর্তন করা দরকার।
সুতরাং আমি বোর্ড কমান্ডগুলিতে ডকার-রচনা দিয়ে একটি উত্তর আশা করছি, যা তারা আশা করে যে এই সমস্যাটি শেষ করলে কেস হবে।
মার্চ ২০১ Update আপডেট করুন
একটা হল প্রস্তাব একটি বিল্ট-ইন ভাবে যদি একটি ধারক "জীবন্ত" হয় তা নির্ধারণ করতে প্রদানের জন্য। সুতরাং ডকার-রচনা সম্ভবত এটি অদূর ভবিষ্যতে ব্যবহার করতে পারে।
জুন 2016 আপডেট করুন
দেখে মনে হচ্ছে স্বাস্থ্য সংস্করণটি 1.12.0 সংস্করণে ডকারে একীভূত করা হবে
জানুয়ারী 2017 আপডেট করুন
আমি একটি ডকার-রচনা সমাধান পেয়েছি দেখুন: ডকার Y শুরু করার আগে ধারক X এর জন্য অপেক্ষা করুন