第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

碼頭工人在啟動Y前等待容器X

碼頭工人在啟動Y前等待容器X

繁華開滿天機 2019-07-25 16:14:49
碼頭工人在啟動Y前等待容器X我使用的是Rabbitmq和一個簡單的python示例這里和碼頭工一起。我的問題是,我需要等待狂犬病完全開始。從我到目前為止搜索的內(nèi)容來看,我不知道如何使用容器x(在我的例子中是工作者)等待,直到y(tǒng)(Rabbitmq)啟動。我發(fā)現(xiàn)了這個博客檢查另一個主機是否在線。我還找到了這個碼頭指揮:等,等候用途:碼頭等待容器[集裝箱.]阻塞,直到容器停止為止,然后打印其退出代碼。等待容器停止可能不是我想要的,但是如果是的話,是否可以在docker-come.yml中使用這個命令呢?到目前為止,我的解決方案是等待幾秒鐘并檢查端口,但這是否實現(xiàn)這一目標的方法呢?如果我不等待,我就會出錯。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條經(jīng)驗 獲得超4個贊

最后用對接-合成方法找到了一個解決方案。因為docker-復(fù)合文件格式2.1可以定義健康檢查.

我是在示例項目您需要安裝至少碼頭1.12.0+。我也需要擴展rabbitmq管理Dockerfile,因為卷發(fā)沒有安裝在官方圖像上。

現(xiàn)在,我測試Rabbitmq容器的管理頁面是否可用。如果cURL以exitcode 0結(jié)束,容器應(yīng)用程序(Pythonpika)將被啟動,并將消息發(fā)布到hello隊列。它現(xiàn)在正在工作(輸出)。

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

產(chǎn)出:

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

版本3不再支持取決于.所以我從“依賴”轉(zhuǎn)到重新啟動“失敗”?,F(xiàn)在,我的應(yīng)用程序容器將重新啟動2-3次直到它工作,但它仍然是一個對接-撰寫功能,而不覆蓋入口點。

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




查看完整回答
反對 回復(fù) 2019-07-27
?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

使用restart: unless-stoppedrestart: always可以解決這個問題。

中頻工人container當RabbitMQ還沒有準備好時停止,它將被重新啟動直到它準備好為止。


查看完整回答
反對 回復(fù) 2019-07-27
  • 3 回答
  • 0 關(guān)注
  • 373 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號