ECONNREFUSEDによるPostgres on nodeJS with dockersの実現
質問
NodeJSでpostgresqlを使ったアプリを作っています。 私はORMとしてSequelizeJSを使用しています。 本当のpostgresデーモンを使用することを避け、私自身のデバイス上でnodejsを持つために、私はdocker-composeでコンテナを使用しています。
を実行すると
docker-compose up
を実行すると、pgデータベースを起動します。
database system is ready to accept connections
で、nodejsサーバを立ち上げます。 しかし、サーバーはデータベースに接続することができません。
Error: connect ECONNREFUSED 127.0.01:5432
コンテナを使用せずにサーバを実行しようとすると(私のマシン上で本物のnodejsとpostgresdを使用)、それは動作します。
しかし、私はコンテナを使って正しく動作させたいと思っています。私は何が間違っているのか理解していません。
以下は
docker-compose.yml
ファイルです。
web:
image: node
command: npm start
ports:
- "8000:4242"
links:
- db
working_dir: /src
environment:
SEQ_DB: mydatabase
SEQ_USER: username
SEQ_PW: pgpassword
PORT: 4242
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
volumes:
- ./:/src
db:
image: postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: username
POSTGRES_PASSWORD: pgpassword
誰か助けてくれませんか?
(dockerが好きな人 :) )
どのように解決するのですか?
あなたの
DATABASE_URL
は
127.0.0.1
であり、これは
ループバックアダプタ
(さらに
はこちら
). これは、quot;connect to myself"という意味です。
両方のアプリケーションを (Docker を使用せずに) 同じホストで実行する場合、両方のアプリケーションは同じアダプタ (以下も同様) でアドレス指定可能です。
localhost
).
コンテナで両方のアプリケーションを実行する場合、以前のように両方のアプリケーションがlocalhost上にあるわけではありません。代わりに
web
コンテナを
db
コンテナの IP アドレスを
docker0
アダプタの IP アドレス - これは
docker-compose
が設定します。
変更します。
127.0.0.1
から
CONTAINER_NAME
(例
db
)
例
DATABASE_URL: postgres://username:[email protected]:5432/mydatabase
から
DATABASE_URL: postgres://username:pgpassword@db:5432/mydatabase
これはDockerのリンクのおかげで動作します。
web
コンテナにはファイル (
/etc/hosts
) を持つ
db
エントリが指す IP は
db
コンテナがある IP を指すエントリです。これはシステム (この場合、コンテナ) がホスト名を解決しようとするときに最初に見る場所です。
関連
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み】Docker コンテナからローカル/ホストの postgres データベースに接続できるようにする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] エラーです。Expressでビューの検索に失敗しました