Help us understand the problem. What is going on with this article?

Dockerで入れたPostgreSQLへのPDO接続でエラーが出て悩んだ。

出たエラー

こんにちは、Docker初心者です。
なんならMySQLばっかりだったのでPostgreSQLも初です(汗)

タイトルのままです。
docker-compose.ymlで入れたPostgreSQLへのPDO接続をしようとしたら、
下のようなエラーが出てしまったンゴです。

error.
 SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name or service not known 

ちなみに書いていたPDOはこんな感じです。

property.php
try {
    $pdo_connect = new PDO( 'pgsql:host=postgres; dbname={name};', '{user}', '{dbname}' );  
} catch(PDOException $e) {
    var_dump($e->getMessage());
}

解決

問題はdocker-compose.ymlとPDOの両方にありました。ymlファイルはこちら。
コメントアウトで間違ってる点書いてます。

docker-compose.yml
  postgres-db:
  #なんと、この postgres-db がHOST名になるらしい。知らなかった。PDOほhostを変える必要あり。
   image: postgres:8.4
   environment:
    POSTGRES_ROOT_PASSWORD: root
    POSTGRES_USER: user
    POSTGRES_PASSWORD: dbname
    POSTGRES_DATABASE: db #これ、本当は POSTGRES_DB: db と書かないといけない。
    TZ: Asia/Tokyo
   hostname: postgres #HOSTがおかしいのかと思ってあとから付け加えたもの。いらない。
   ports:
    - 6001:5432

修正後

property.php
try {
    $pdo_connect = new PDO( 'pgsql:host=postgres-db; dbname={name};', '{user}', '{dbname}' );   
} catch(PDOException $e) {
    var_dump($e->getMessage());
}
docker-compose.yml
  postgres-db:
   image: postgres:8.4
   environment:
    POSTGRES_ROOT_PASSWORD: root
    POSTGRES_USER: user
    POSTGRES_PASSWORD: dbname
    POSTGRES_DB: db
    TZ: Asia/Tokyo
   ports:
    - 6001:5432

接続完了!
パイセンに感謝です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした