在Docker中将Node-Red连接到Mariadb

如何解决在Docker中将Node-Red连接到Mariadb

晚上,

从docker-compose设置一个相当简单的Mosquitto-> Node-Red-> Mariadb部署。撰写文件如下:

version: '3.8'

services:
        mqtt:
                container_name: mosquitto
                image: eclipse-mosquitto:latest
                restart: always
                ports: 
                    - "1883:1883"
                volumes:
                        - ./mosquitto.conf:/mosquitto/config/mosquitto.conf
                        - /mosquitto/data
                        - /mosquitto/log

        nodered:
                container_name: node-red
                image: nodered/node-red:latest
                restart: always
                ports: 
                    - "1880:1880"
                volumes:
                        - node_red_user_data:/data
                links:
                        - "mariadb:mariadb"

        mariadb:
                container_name: mariadb
                image: mariadb:latest
                restart: always
                command: --default-authentication-plugin=mysql_native_password
                ports: 
                    - "3306:3306"
                    - "33060:33060"
                environment:
                        - MYSQL_RANDOM_ROOT_PASSWORD=yes
                        - MYSQL_DATABASE=test
                        - MYSQL_USER=testuser
                        - MYSQL_PASSWORD=password

                volumes:
                        - mariadb_data_container:/var/lib/mysql

volumes:
        mariadb_data_container:
        node_red_user_data:
        mosquitto_persistence:


networks:
        default:
                name: primary        

蚊子到Node-Red的运行良好,并且我已经在mariadb中设置了数据库和表,但是我没有运气让Node-Red与Maria对话。让这个错误回到我身边。

Error: connect ECONNREFUSED 127.0.0.1:3306

有问题的节点红色节点如下:

[{"id":"d93d7d2b.ee27f","type":"mysql","z":"ec0540ab.8b4e2","mydb":"68416de0.8f91a4","name":"XDK Environmental Data","x":750,"y":260,"wires":[["d0d7439f.9b88d"]]},{"id":"68416de0.8f91a4","type":"MySQLdatabase","z":"","name":"Write to mariadb","host":"localhost","port":"3306","db":"XDK_FEM","tz":""}

在某种程度上有用的情况下,此处为全节点红色流。

[{"id":"ec0540ab.8b4e2","type":"tab","label":"MQTT_MYSQL_write","disabled":false,"info":""},{"id":"772011e7.51dd4","type":"mqtt in","name":"XDK1_Output","topic":"BCDS/XDK110/example/out","qos":"2","datatype":"utf8","broker":"ac9b691.6c35998","x":90,"wires":[["f7d34d6b.63919","8336338b.e648c"]]},{"id":"d0d7439f.9b88d","type":"debug","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":990,"wires":[]},{"id":"d79d4ae0.fcf958","type":"function","name":"Create query in topic","func":"var out = \"INSERT INTO XDK1_raw (timestamp,message)\"\nout = out + \"VALUES ('\" + new Date().toISOString() + \"','\" \nout = out + msg.payload + \"');\"\nmsg.topic=out;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"wires":[["d93d7d2b.ee27f"]]},{"id":"9b43a338.781","type":"comment","name":"Log everything","info":"","x":100,"y":200,{"id":"d93d7d2b.ee27f",{"id":"f7d34d6b.63919","active":false,"complete":"payload","targetType":"msg","x":310,"y":180,{"id":"8336338b.e648c","type":"json","property":"payload","action":"str","pretty":true,"x":270,"y":300,"wires":[["cbee55ed.b7a668","d79d4ae0.fcf958"]]},{"id":"cbee55ed.b7a668","complete":"false","x":480,"y":380,{"id":"ac9b691.6c35998","type":"mqtt-broker","name":"XDK_Mosquitto","broker":"192.168.1.115","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},"tz":""}]

我尝试了端口和配置的各种组合,在将自己深入研究到一个漏洞之后,我只是重置了所有内容以从头开始。

任何见识都深表感谢!

编辑

我意识到这对面对相同图像的人来说不是一个非常有用的更新,但是最后我删除了该容器,然后再次从docker-compose开始运行,并且成功了。主只知道。工作原理是,在找到正确答案(使用“ mariadb”而不是“ localhost”)之前,我尝试尝试错误答案时遇到了麻烦。

解决方法

要记住的重要一点是,每个容器都具有自己的环回设备(lo,127.0.0.1),容器的主机也具有自己的环回设备,并且它们完全独立。

因此您不能从Node-RED容器中将MariaDB容器引用为127.0.0.1,因为该地址指向Node-RED容器。

在输入详细信息或mariadb配置节点时,您需要使用主机名mariadb而不是127.0.0.1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-