相关疑难解决方法(0)

Docker Compose在启动Y之前等待容器X.

我使用的RabbitMQ并从一个简单的Python样品在这里 一起泊坞窗-撰写.我的问题是我需要等待rabbitmq完全启动.从我到目前为止搜索到的,我不知道如何等待容器x(在我的情况下是工人)直到y(rabbitmq)开始.

我找到了这个博文,他检查其他主机是否在线.我还发现了这个docker命令:

等待

用法:docker等CONTAINER [CONTAINER ...]

阻止,直到容器停止,然后打印其退出代码.

等待容器停止可能不是我想要的但如果是,是否可以在docker-compose.yml中使用该命令?到目前为止,我的解决方案是等待几秒钟并检查端口,但这是实现此目的的方法吗?如果我不等,我会收到错误.

泊坞窗,compose.yml

worker:
    build: myapp/.
    volumes:
    - myapp/.:/usr/src/app:ro

    links:
    - rabbitmq
rabbitmq:
    image: rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)

python hello sample(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='', …
Run Code Online (Sandbox Code Playgroud)

docker-compose

271
推荐指数
13
解决办法
18万
查看次数

RabbitMq在docker中运行时拒绝连接

我的docker-compose文件如下所示:

version: '2'

services:
  explore:
    image: explore
    build:
      context: ./Explore
      dockerfile: VsDockerfile
    environment:
      - "ElasticUrl=http://localhost:9200"
      - "RabbitMq/Host=localhost"
      - "RabbitMq/Username=guest"
      - "RabbitMq/Password=guest"
    networks:
      - localnet

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
    container_name: elasticsearch
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - 9200:9200
    volumes:
      - ./esdata:/usr/share/elasticsearch/data
    networks:
      - localnet

  rabbit:
    image: rabbitmq:3.6.7-management
    hostname: rabbit
    ports:
      - 15672:15672
      - 5672:5672
    networks:
      - localnet

networks:
  localnet:
    external:
      name: localnet
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中输入http:// localhost:15672,我会得到rabbitmq接口,但是如果我尝试从我的Explore项目连接如下:

public SqlToRabbitProcessor(SqlToRabbitRepository sqlToRabbitRepository)
{
    _sqlToRabbitRepository = sqlToRabbitRepository;

    var factory = new ConnectionFactory
    {
        HostName = Environment.GetEnvironmentVariable("RabbitMq/Host"), …
Run Code Online (Sandbox Code Playgroud)

sockets rabbitmq .net-core docker-compose

4
推荐指数
1
解决办法
6462
查看次数

标签 统计

docker-compose ×2

.net-core ×1

rabbitmq ×1

sockets ×1