碼頭工人在啟動(dòng)Y前等待容器X我使用的是Rabbitmq和一個(gè)簡(jiǎn)單的python示例這里和碼頭工一起。我的問(wèn)題是,我需要等待狂犬病完全開(kāi)始。從我到目前為止搜索的內(nèi)容來(lái)看,我不知道如何使用容器x(在我的例子中是工作者)等待,直到y(tǒng)(Rabbitmq)啟動(dòng)。我發(fā)現(xiàn)了這個(gè)博客檢查另一個(gè)主機(jī)是否在線。我還找到了這個(gè)碼頭指揮:等,等候用途:碼頭等待容器[集裝箱.]阻塞,直到容器停止為止,然后打印其退出代碼。等待容器停止可能不是我想要的,但是如果是的話,是否可以在docker-come.yml中使用這個(gè)命令呢?到目前為止,我的解決方案是等待幾秒鐘并檢查端口,但這是否實(shí)現(xiàn)這一目標(biāo)的方法呢?如果我不等待,我就會(huì)出錯(cuò)。Docker-Compose.ymlworker:
build: myapp/.
volumes:
- myapp/.:/usr/src/app:ro
links:
- rabbitmq
rabbitmq:
image: rabbitmq:3-managementPythonHello示例(rabbit.py):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"]
碼頭工人在啟動(dòng)Y前等待容器X
侃侃爾雅
2019-07-22 15:30:29