Соединительный узел-красный с Mariadb в Docker

#docker #docker-compose #mariadb #node-red

#docker #docker-составить #mariadb #узел-красный

Вопрос:

Добрый вечер всем,

Настройка довольно простого развертывания Mosquitto -> Node-Red -> Mariadb из docker-compose. Создайте файл, как показано ниже:

 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        
  

Mosquitto к Node-Red работает достаточно хорошо, и я настроил базу данных и таблицу в mariadb, но мне никак не удается заставить Node-Red поговорить с Марией. Возвращаю мне эту ошибку.

 Error: connect ECONNREFUSED 127.0.0.1:3306
  

Рассматриваемый узел Node-red выглядит следующим образом:

 [{"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":""}
  

Полный поток Node-red здесь, на случай, если это каким-то образом полезно.

 [{"id":"ec0540ab.8b4e2","type":"tab","label":"MQTT_MYSQL_write","disabled":false,"info":""},{"id":"772011e7.51dd4","type":"mqtt in","z":"ec0540ab.8b4e2","name":"XDK1_Output","topic":"BCDS/XDK110/example/out","qos":"2","datatype":"utf8","broker":"ac9b691.6c35998","x":90,"y":260,"wires":[["f7d34d6b.63919","8336338b.e648c"]]},{"id":"d0d7439f.9b88d","type":"debug","z":"ec0540ab.8b4e2","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":990,"y":260,"wires":[]},{"id":"d79d4ae0.fcf958","type":"function","z":"ec0540ab.8b4e2","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;nnreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":500,"y":260,"wires":[["d93d7d2b.ee27f"]]},{"id":"9b43a338.781","type":"comment","z":"ec0540ab.8b4e2","name":"Log everything","info":"","x":100,"y":200,"wires":[]},{"id":"d93d7d2b.ee27f","type":"mysql","z":"ec0540ab.8b4e2","mydb":"68416de0.8f91a4","name":"XDK Environmental Data","x":750,"y":260,"wires":[["d0d7439f.9b88d"]]},{"id":"f7d34d6b.63919","type":"debug","z":"ec0540ab.8b4e2","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":310,"y":180,"wires":[]},{"id":"8336338b.e648c","type":"json","z":"ec0540ab.8b4e2","name":"","property":"payload","action":"str","pretty":true,"x":270,"y":300,"wires":[["cbee55ed.b7a668","d79d4ae0.fcf958"]]},{"id":"cbee55ed.b7a668","type":"debug","z":"ec0540ab.8b4e2","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":480,"y":380,"wires":[]},{"id":"ac9b691.6c35998","type":"mqtt-broker","z":"","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":""},{"id":"68416de0.8f91a4","type":"MySQLdatabase","z":"","name":"Write to mariadb","host":"localhost","port":"3306","db":"XDK_FEM","tz":""}]
  

Я пробовал различные комбинации портов и конфигураций, и после того, как я зарылся глубже в яму, я просто сбросил все, чтобы начать с нуля.

Любая информация с благодарностью принята!

Редактировать

Я понимаю, что это не очень полезное обновление для тех, кто сталкивается с тем же изображением, но в конце я удалил контейнер и снова запустил docker-compose, и это сработало. Одному Господу известно. Рабочая теория заключается в том, что перед тем, как нажать на правильный ответ (используя ‘mariadb’ вместо ‘localhost’) Я что-то сломал, пытаясь ответить неправильно.

Ответ №1:

Важно помнить, что у каждого контейнера есть свое собственное устройство обратной связи (lo, 127.0.0.1), и хост для контейнеров также имеет свое собственное, и все они полностью разделены.

Таким образом, вы не можете ссылаться на контейнер MariaDB как 127.0.0.1 из контейнера Node-RED, поскольку этот адрес указывает на контейнер Node-RED.

Вам нужно использовать имя хоста, mariadb а не 127.0.0.1 при вводе сведений или узла конфигурации mariadb.

Комментарии:

1. Я знал, что это было что-то в этом роде! Хотя, возможно, это только первая из моих проблем, поскольку теперь она изменена на Error: connect ECONNREFUSED 172.18.0.2:3306