如何解决码头集装箱内的蚊子
我对蚊子有一个奇怪的问题。流量进入 mosquitto 容器,我的后端代码将其注册,但没有流量从 docker 容器流出并进入主机 .
我是如何验证的?我用 mosquitto_sub 订阅了主机上的主题。从那个容器中什么也得不到。
trinch@quark:~$ mosquitto_sub -t radios/config-downstream/{token}
如果我从主机发布了一些东西,BE 容器中的 nest.js 代码会注册它。
mosquitto_pub -t radios/config-downstream/{token} -m "{"hola": "hola"}"
如果我在没有 docker&compose 的情况下运行它,一切都会正常运行。
我觉得我在这里缺少一些基础知识。请帮忙。
Docker 组合设置:
version: '3.7'
services:
main:
container_name: iotfreezer-backend
build:
context: .
ports:
- ${DOCKER_MAPPED_PORT}:${SERVER_PORT}
command: yarn run start
env_file:
- .env
networks:
- webnet
depends_on:
# - postgrestest
- postgres
- mosquitto
logging:
driver: "json-file"
options:
max-file: "5"
max-size: "10m"
postgres:
container_name: postgres
image: postgres:12
networks:
- webnet
environment:
POSTGRES_PASSWORD: ${PGPASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE}
PG_DATA: /var/lib/postgresql/data
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
logging:
driver: "json-file"
options:
max-file: "5"
max-size: "10m"
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto:latest
volumes:
- ./mosquitto.conf:/mosquitto/config/mosquitto.conf
ports:
- "1883:1883"
networks:
- webnet
networks:
webnet:
volumes:
pgdata:
Mosquitto.conf:
listener 1883
Nestjs 代码:
设置:
app.connectMicroservice<MicroserviceOptions>({
transport: Transport.MQTT,options: {
url: process.env.MQTT_BROKER_URL,},});
app.setGlobalPrefix('api');
服务:
@Injectable()
export class RadioService {
constructor(
@InjectRepository(Radio)
private radioRepository: Repository<Radio>,@Inject('MQTT_CLIENT') private mqttClient: MqttClient,) {}
public async sendConfigToRadio(id: RadioId): Promise<void> {
const radio = await this.radioRepository.findOne(id);
this.mqttClient.emit(`radios/config-downstream/${radio.accessToken}`,JSON.stringify(radio.config));
}
}
环境:
MQTT_BROKER_URL = "mqtt://mosquitto:1883"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。