LoginSignup
0
0

More than 3 years have passed since last update.

DockerでNode-REDからPostgresに接続した

Posted at

はじめに

DockerでNode-REDコンテナからPostgresコンテナへ接続する際に少し沼った。
「ECONNREFUSED」が出てきて接続できなかった。
2か所ほど設定を間違っていたので、備忘録として。

状況

  • Dockerで下記コンテナ間で接続を試みた
    • Node-RED
    • Postgres
  • docker-compose.ymlを用いた立ち上げ
version: '3'
services:
    postgres:
        image: postgres
        container_name: postgres
        ports:
            - '6432:5432'
        volumes:
            - (略)
        environment:
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: *****
    nodered:
        image: nodered/node-red
        container_name: nodered
        ports:
            - '2880:1880'
        volumes:
            - (略)
  • Node-REDのノード、設定は下記の通り
    • ノード: node-red-contrib-postgres-variable
    • Host: localhost
    • Port: 6432
    • Database: postgres
    • Username: postgres
    • Password: *****

解消

Node-REDのノード設定が間違っていた。

Host

内部接続ではあるものの、ホストはlocalhostではなくpostgresにしなければならなかった。
コンテナ間の接続は同ネットワーク内での接続ということで、IPアドレスなどを指定するのではなく、コンテナ名を指定する必要があると思われる。
たしかにlinksのような内部接続の設定を考慮すると当然といえば当然かもしれない。
ちなみに、Postgresのコンテナ内でhostnameコマンドを実行すると、コンテナのIDが出力される。

Port

ポートの設定をポートフォワーディングで設定していた6432に設定していたが、正しくは元の5432を指定しなければならかった。
ポートフォワーディングはあくまで外部から接続があった場合の設定なので、同じネットワーク内にあるコンテナ間の接続では、既存のポートを設定する必要があると思われる。
そりゃそうか。

終わりに

Dockerでコンテナを立ち上げて作業しているということを忘れていると、このような現象に見舞われる気がする。
Dockerの基礎知識をもっと付けておかないと、よくわからないところで沼るなと改めて思った。


最後まで読んでいただきありがとうございます。
認識が違っている点などがあれば、ぜひご指摘ください!
(特にDockerは詳しくないので、今後誰かの助けとなるようブラッシュアップしていきたいです!)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0