当前位置: 首页 > 知识库问答 >
问题:

在docker容器中运行RabbitMQ

胡新
2023-03-14
version: '3.4'

services:
  rabbit-sender:
    image: rabbit-sender
    container_name: rabbit-sender
    build: 
        context: ../SenderRabitMQ
        dockerfile: debug.Dockerfile
    env_file: common.env
    networks:
      - rabbitPoc
    expose:
      - "80"

  rabbit-receiver:
    image: rabbit-receiver
    container_name: rabbit-receiver
    build: 
      context: ../ReceiveRabitMQ
      dockerfile: debug.Dockerfile
    env_file: common.env
    networks:
      - rabbitPoc
    expose:
      - "80"

  rabbitmq:
    image: rabbitmq:3.7.15
    hostname: rabbitmq
    build: 
      context: rabbit
      dockerfile: debug.Dockerfile
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - "./enabled_plugins:/etc/rabbitmq/enabled_plugins"

Debug.DockerFile

Install RabbitMQ
FROM ubuntu:14.04.1

CMD docker pull dockerfile/rabbitmq
CMD docker build -t="dockerfile/rabbitmq" github.com/dockerfile/rabbitmq

FROM dotnet-core-sdk-2.1-debug:latest AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY SenderRabitMQ/SenderRabitMQ.csproj SenderRabitMQ/
RUN dotnet restore SenderRabitMQ/SenderRabitMQ.csproj

# Copy everything else and build
COPY ./ ./
RUN dotnet publish SenderRabitMQ/SenderRabitMQ.csproj -c Debug -o out --no-restore

# Build runtime image
FROM dotnet-core-aspnet-2.1-debug:latest
WORKDIR /app

COPY --from=build-env /app/SenderRabitMQ/out .

ENTRYPOINT ["dotnet", "SenderRabitMQ.dll"]

运行命令

docker run  --hostname myrabbit rabbitmq:3

正在连接RabbitMQ


var factory = new ConnectionFactory() { HostName = "myrabbit:5672" , DispatchConsumersAsync = true };

rabbit-sender      | Unhandled Exception: 
RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the 
specified endpoints were reachable ---> System.AggregateException: 
One or more errors occurred. (Connection failed) ---> 
RabbitMQ.Client.Exceptions.ConnectFailureException: Connection 
failed ---> 
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: 
Connection refused 127.0.0.1:5672

共有1个答案

东门秦迟
2023-03-14

您的docker compose将RabbitMQ服务主机名设置为RabbitMQ,而不是myrabbit(您正在尝试连接到的)。请尝试以下操作:

var factory = new ConnectionFactory() { HostName = "rabbitmq", port = 5672 , DispatchConsumersAsync = true };

您还需要Dockerfile rabbitmq部分与其他服务位于同一网络上:

rabbitmq:
    image: rabbitmq:3.7.15
    hostname: rabbitmq
    build: 
      context: rabbit
      dockerfile: debug.Dockerfile
    ports:
      - "5672:5672"
      - "15672:15672"
    networks:
      - rabbitPoc
    volumes:
      - "./enabled_plugins:/etc/rabbitmq/enabled_plugins"

希望有帮助!

 类似资料:
  • 问题内容: 我正在尝试在Alpine 3.10 docker容器中专门运行GeckoDriver v0.26.0 。 在弄清楚一些事情之后,我碰壁了: 我想念什么? 我怎么到这里 首先启动docker容器: 然后尝试安装GeckoDriver 真?但我只是提取了它…嗯…好 提取正确吗?是对的吗 是。好吧,让我们用谷歌搜索。好吧,也许我应该检查一下信息。默认情况下,Alpine没有。 对于同一问题的

  • 本文向大家介绍Docker容器中运行nginx,包括了Docker容器中运行nginx的使用技巧和注意事项,需要的朋友参考一下 nginx简介 Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能

  • Kibana 的 Docker 镜像可以从 Elastic 官网上的 Docker 镜像仓库获取。该镜像是随 X-Pack 一起打包的。 注意:X-Pack 在这个 image 中是预装好的。安装了 X-Pack,Kibana 会去连接同样带有 X-Pack 的 Elasticsearch 集群。 获取镜像 向 Elastic Docker 仓库发送一条 docker pull 命令就可以获取 K

  • 本文向大家介绍Docker 在后台运行容器,包括了Docker 在后台运行容器的使用技巧和注意事项,需要的朋友参考一下 示例 要使容器在后台运行,请-d在容器启动期间提供命令行选项: 该选项-d以分离模式运行容器。它也等效于-d=true。 处于分离模式的容器停止时不能自动删除,这意味着不能将--rm选项与-d选项结合使用。

  • 问题内容: 我想使用docker-compose在“主机”网络中生成3个服务。这是我的docker-compose.yml文件: 我收到以下错误: 我在Windows上使用boot2docker。 Docker和Docker-compose版本: 如果我通过使用所有内容手动运行所有服务,则一切正常。 在文档中,我读到 docker-compose支持* net 命令: * 净 联网模式。使用与do

  • 正如文档中所说,如果我想在docker中运行测试容器,我必须考虑以下几点: null