質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

581閲覧

docker-compose間の通信でPostgreSQLへのアクセスがうまくいかない問題解決方法をご教授ください

holiholi_777

総合スコア10

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2024/01/26 03:46

編集2024/01/26 05:53

実現(解決)したいこと

  • docker-compose間でPostgreSQLへの問い合わせを行いたい
  • docker-compose間での通信で足りない設定がないか確認したい

現状

  • VSCode dev containerで作業をしています。
  • VSCode dev containerでは別々の二つのプロジェクトが存在します。
  • AプロジェクトとBプロジェクトでそれぞれ起動するコンテナが別々です。(下記プロジェクト構成概要を参照のこと)
  • Aプロジェクトと同時に起動されるdocker-compose-db-postgresql.ymlにはAプロジェクトのプログラムから問題無くアクセスが可能です。
  • Aプロジェクトで起動されるPostgreSQLにはホストOSからのアクセスが可能です。
  • BプロジェクトのプログラムからのAプロジェクトと同時起動されるPostgreSQLへのアクセスに問題が発生します。
  • Bプロジェクトからコンテナ名でIPは見えている事は確認しています。
  • Aプロジェクトで起動されるコンテナとBプロジェクトで起動されるコンテナは同一ネットワークに所属していることは確認済みです。

プロジェクト構成概要

  • Aプロジェクト(VSCode dev container)
    • docker-compose.yml (dev container)
    • docker-compose-db-postgresql.yml
    • docker-compose-db-mongo.yml
  • Bプロジェクト(VSCode dev container)
    • docker-compose.yml (dev container)

エラー内容

(psycopg2.OperationalError) connection to server at "コンテナ名" (172.27.0.3), port 5432 failed: FATAL: database "コンテナ名" does not exist (Background on this error at: https://sqlalche.me/e/20/e3q8)

各ファイル

プロジェクトA

docker-compose.yml

version: '3.9' services: web_api: container_name: 'web_api' hostname: 'web_api' build: . (開発のプログラム用の為Dockerファイルを別にしてある) restart: always working_dir: '/devwork' tty: true volumes: - type: bind source: .. target: /devwork - "hoge_storage:/send_files" networks: - default - hoge_network volumes: hoge_storage: external: true networks: hoge_network: external: true

docker-compose-db-postgresql.yml

version: '3.9' services: db_postgresql: image: postgres:latest restart: always container_name: 'db_postgresql' hostname: 'db_postgresql' ports: - 5432:5432 volumes: - postgresql-storage:/var/lib/postgresql/data - ./script:/docker-entrypoijnt-initdb.d # 初期テーブルとデータ作成用のSQL(権限はちゃんとつけている) environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres networks: - default - hoge_network volumes: postgresql-storage: networks: hoge_network: external: true

docker-compose-db-mongo.yml

省略

プロジェクトB

ちなみに言語は一緒なので、設定はAプロジェクトと同一です。

docker-compose.yml

version: '3.9' services: web_api: container_name: 'web_api' hostname: 'web_api' build: . (開発のプログラム用の為Dockerファイルを別にしてある) restart: always working_dir: '/devwork' tty: true volumes: - type: bind source: .. target: /devwork - "hoge_storage:/send_files" networks: - default - hoge_network volumes: hoge_storage: external: true networks: hoge_network: external: true

アクセス時のホスト名

コンテナ名をホスト名として扱っています。

ためした事(2024/01/26 14:41)

各コンテナ間で通信ができているかを確認する為ping等を確認しました。

shell

1apt install iputils-ping net-tools

その後、A,Bプロジェクトでpingを発行したところ、双方問題無く通信が行えました。

各コンテナにpsqlをインストールしました。

shell

1apt install -y postgresql-client

その後、A,Bプロジェクトでそれぞれでpsqlを使用して接続を行ってみました。
結果としては両方のプロジェクトで接続が行えました。
なので、コンテナ間はやはり通信ができているようです。

大変申し訳ございません(2024/01/26)

スペースが紛れ込んでました接続設定ファイルに。
自己解決しました。

最後に

最後までご確認頂きありがとうございます。
上記問題の解決方法をご存じの方がおられましたら、ご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

接続情報にスペースが紛れ込んでました。
お騒がせして大変申し訳ございませんでした。

投稿2024/01/26 05:54

holiholi_777

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問