将 Spring Boot 对接容器连接到MQTT对接容器

polhcujo  于 2022-11-02  发布在  Docker
关注(0)|答案(1)|浏览(162)

我试图将我的容器化的Sping 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文件中包含所有配置,以减少手动代码。非常感谢您的帮助!

e5nszbig

e5nszbig1#

是的,您必须将网络共享为外部网络。
您可以使用以下命令检查您拥有的网络:docker network ls
你会注意到他们每个人都有自己的网络。
将此内容添加到Sping Boot Docker-compose文件中应该可以解决此问题:

networks:
  default:
    name: mynetwork
    external: true

有关docker compose networks的详细信息

相关问题