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

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

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

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

PostgreSQL

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

Docker

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

Q&A

解決済

2回答

3471閲覧

dockerコンテナ内から別のコンテナ内のDBへアクセスの仕方がわかりません

akira28

総合スコア7

docker-compose

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

PostgreSQL

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

Docker

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

0グッド

0クリップ

投稿2018/02/14 14:44

前提・実現したいこと

実行環境:
MacOS High Sierra 10.13.3
docker: 17.12.0-ce, build c97c6d6
docker-compose: 1.18.0, build 8dd22a9

実現したいことは,
docker-composeでappコンテナとdbコンテナを起動し,
appコンテナ内からdbコンテナ内のpostgresqlサーバーに接続がしたいです.

現状, appコンテナの立ち上げ,内部へアクセスまでが出来ていますが,
そこからdbコンテナ内のpostgresqlサーバーへアクセスが出来ていません.

発生している問題・エラーメッセージ

psqlコマンドが見つからない

root@fa31b088af86:/# psql -U pguser -d hoge -p 5432 bash: psql: command not found

該当のソースコード

docker-compose.yml

version: '2' services: db: image: postgres ports: - 5432 environment: - POSTGRES_USER=pguser - POSTGRES_PASSWORD=pgpass - POSTGRES_DB=hoge # データの永続化 volumes: - ./db/postgresql:/var/lib/postgresql/data tty: true app: # dockerfileの場所を指定 build: . # dbコンテナを指定 depends_on: - db # appコンテナの/etc/hostsにdbのipを記述する links: - db # docker-compose upした時に立ち上げたままにする tty: true

dockerfile

FROM ubuntu:16.04 RUN apt-get -y update RUN apt-get -y upgrade

試したこと

# docker-compose ビルドしてコンテナを立ち上げ docker-compose up -d --build
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9c5680547fad dockercompose_app "/bin/bash" 13 seconds ago Up 12 seconds dockercompose_app_1 f5c2a10c43c1 postgres "docker-entrypoint.s…" 13 seconds ago Up 13 seconds 0.0.0.0:32769->5432/tcp dockercompose_db_1
# 立ち上げたappコンテナ(dockercompose_app_1)の内部にアクセス docker exec -it dockercompose_app_1 bash # postgresqlに接続 → psqlコマンドがありません psql -U pguser -d hoge -p 5432 bash: psql: command not found

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

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

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

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

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

guest

回答2

0

ベストアンサー

回答にありますとおりPostgreSQLのクライアントが必要です。
PostgreSQLはデフォルトでlocalhostからしかアクセスを受け付けていませんので、
postgresql.confの listen_addressesを *にして
pg_hba.confで host all all 許可NWセグメント password
等に設定してPostgreSQLを再起動して下さい。

ちなみに、psqlで指定するホスト名はdbのコンテナ名で大丈夫かと思います。

参考情報 https://www.postgresql.jp/document/9.6/html/auth-pg-hba-conf.html

投稿2018/02/16 07:50

yo4da

総合スコア25

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

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

akira28

2018/02/16 13:23

回答ありがとうございます。 PostgreSQLの設定をいじる必要があったのですね。 参考情報見ながら設定してみます。 ありがとうございました。
guest

0

app コンテナに postgresql クライアントが入っていないためだと思われます。

app コンテナから db に接続したい場合は docker file に

RUN apt-get -y install postgresql

を足して app コンテナにもクライアントを導入する必要があります。

投稿2018/02/15 01:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

akira28

2018/02/15 21:09

回答ありがとうございます. appコンテナにも postgresqlインストールしなければならなかったんですね.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問