【问题标题】:Connecting spring boot docker container to MQTT docker container将 Spring Boot Docker 容器连接到 MQTT Docker 容器
【发布时间】:2022-11-01 19:46:05
【问题描述】:

我正在尝试将我的容器化 Spring Boot 应用程序与另一个容器化 MQTT 代理连接起来。他们俩都在自己的项目上,如下所示:

mqtt docker-compose.yml:

version: '3.9'

services:
  mqttbroker:
    container_name: mqttbroker
    restart: always
    volumes:
      - ./config:/mosquitto/config
      - ./data:/mosquitto/data
      - ./log:/mosquitto/log
    ports:
      - 8883:8883
    networks:
      - mynetwork
volumes:
  config:
  data:
  log:

mqtt Dockerfile

FROM eclipse-mosquitto
WORKDIR /mosquitto
COPY . .
EXPOSE 8883

然后spring boot项目是这样的:

spring boot docker-compose.yml

version: '3.8'
services:
  myapp:
    build: .
    container_name: myapp
    ports:
      - '8082:8082'
    stdin_open: true
    tty: true
    networks:
      - mynetwork

在我的application.properties 中,我尝试连接到 MQTT 代理,例如: mosquitto.url=tcp://mqttbroker:8883 我被拒绝连接。但是,如果我在本地运行 spring boot 应用程序,我可以使用mosquitto.url=tcp://localhost:8883 连接到 docker 容器。 我宁愿在我的 docker-compose 文件中包含所有配置以减少手动代码。 非常感谢您提前提供的帮助!

【问题讨论】:

标签: java spring-boot docker mqtt


【解决方案1】:

是的,您必须作为外部共享网络。

您可以使用以下命令检查您拥有的网络:docker network ls

您会注意到他们每个人都有自己的网络。

将此添加到 spring boot docker-compose 文件应该可以解决问题:

networks:
  default:
    name: mynetwork
    external: true

有关docker compose networks的更多信息

【讨论】:

  • 这对我的情况不起作用。奇怪,但在检查网络后,他们都连接到网桥而不是我的网络。看到这个后,我更改了运行命令并将 --network=mynetwork 添加到两个 docker 容器中,但仍然得到相同的错误。
  • 我已经更新了我的问题,也许你可以再试一次。
猜你喜欢
  • 2017-11-10
  • 2021-04-04
  • 2019-04-14
  • 2021-07-18
  • 2021-05-09
  • 1970-01-01
  • 2022-01-09
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多