码头工人在启动Y前等待容器X我使用的是Rabbitmq和一个简单的python示例这里和码头工一起。我的问题是,我需要等待狂犬病完全开始。从我到目前为止搜索的内容来看,我不知道如何使用容器x(在我的例子中是工作者)等待,直到y(Rabbitmq)启动。我发现了这个博客检查另一个主机是否在线。我还找到了这个码头指挥:等,等候用途:码头等待容器[集装箱.]阻塞,直到容器停止为止,然后打印其退出代码。等待容器停止可能不是我想要的,但是如果是的话,是否可以在docker-come.yml中使用这个命令呢?到目前为止,我的解决方案是等待几秒钟并检查端口,但这是否实现这一目标的方法呢?如果我不等待,我就会出错。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"]
3 回答
慕村225694
TA贡献1880条经验 获得超4个赞
Docker-Composed(2.1版):
version: '2.1' services: app: build: app/. depends_on: rabbit: condition: service_healthy links: - rabbit rabbit: build: rabbitmq/. ports: - "15672:15672" - "5672:5672" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:15672"] interval: 30s timeout: 10s retries: 5
产出:
rabbit_1 | =INFO REPORT==== 25-Jan-2017::14:44:21 === rabbit_1 | closing AMQP connection <0.718.0> (172.18.0.3:36590 -> 172.18.0.2:5672) app_1 | [x] Sent 'Hello World!' healthcheckcompose_app_1 exited with code 0
Dockerfile(rabbitmq+curl):
FROM rabbitmq:3-management RUN apt-get update RUN apt-get install -y curl EXPOSE 4369 5671 5672 25672 15671 15672
Docker-Composed(第3版):
version: "3" services: rabbitmq: # login guest:guest image: rabbitmq:management ports: - "4369:4369" - "5671:5671" - "5672:5672" - "25672:25672" - "15671:15671" - "15672:15672" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:15672"] interval: 30s timeout: 10s retries: 5 app: build: ./app/ environment: - HOSTNAMERABBIT=rabbitmq restart: on-failure depends_on: - rabbitmq links: - rabbitmq
慕妹3146593
TA贡献1820条经验 获得超9个赞
restart: unless-stopped
restart: always
container
- 3 回答
- 0 关注
- 357 浏览
添加回答
举报
0/150
提交
取消