【发布时间】: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 文件中包含所有配置以减少手动代码。
非常感谢您提前提供的帮助!
【问题讨论】:
-
Communication between multiple docker-compose projects 讨论这样的设置;要么您需要在同一个 Compose 文件中运行这两个部分,要么您需要显式配置这两个项目以使用同一个 Docker 网络。那里的答案对你有帮助吗?
标签: java spring-boot docker mqtt