実現(解決)したいこと
- 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)
スペースが紛れ込んでました接続設定ファイルに。
自己解決しました。
最後に
最後までご確認頂きありがとうございます。
上記問題の解決方法をご存じの方がおられましたら、ご回答よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。