繁体   English   中英

无法从另一个 docker 容器连接 ActiveMQ docker 容器

[英]Not able to connect ActiveMQ docker container from another docker container

version: '3.9'
services:
activemq:
image: rmohr/activemq:5.15.9-alpine
restart: always
ports:
  - 61616:61616
  - 8161:8161
  - 5672:5672
container_name: activemq


app-service:
image: app-service:v1
restart: always
ports:
  - 8080:8080
container_name: app-service
links:
  - activemq
depends_on:
  - activemq

在我的应用服务中,我使用 Spring Boot spring.activemq.broker-url=tcp://activemq:61616 activem 配置了 ActiveMQ 代理 URL 以及用户名和密码。

当我尝试运行docker-compose up ,应用服务显示以下错误

DefaultMessageListenerContainer  : Could not refresh JMS Connection for   
destination 'queueName' - retrying using FixedBackOff{interval=5000,   
currentAttempts=5, maxAttempts=unlimited}. Cause:   Java.lang.NullPointerException.

我可以在浏览器上访问 ActiveMQ web 控制台(例如使用http://localhost:8161 )。

如果没有 docker 容器,相同的代码在 localhost 中运行良好。

我也有这个确切的问题,帮助我的是添加spring.activemq.broker-url=tcp://activemq:61616到 docker-compose 为应用程序环境标签。 对我来说是这样的:

  app:
    build:
      context: .
    container_name: app
    ports:
      - 8080:8080
    environment:
      - spring.activemq.broker-url=tcp://activemq:61616
    depends_on:
      - activemq

我认为容器化的 spring 应用程序无论出于何种原因都看不到来自应用程序属性的 broker-url

是的,最大的原因是您的应用程序在 activemq 服务之前运行。 您可以尝试 docker-compose 并在终端中查看控制台登录。

修正:这还不是一个好主意,但你可以 go 到 docker 应用程序,然后单击重新启动应用程序容器的名称,然后一切都会工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM